(小技)undefinedと 空文字のスマートなif文判定

著者名:北川 恭平(サイボウズ株式会社)

kintoneでは、未入力のフィールドの値を取得する場合、APIを実行する画面によって未入力を表す値が異なることがあります。
フィールドが空の場合
たとえば「文字列1行」フィールドの場合、それぞれ次の値が返ります。

  • レコード詳細画面

    1
    2
    3
    4
    
    "文字列__1行__0": {
      "type": "SINGLE_LINE_TEXT",
      "value": ""
    }
  • レコード追加画面

    1
    2
    3
    4
    
    "文字列__1行__0": {
      "type": "SINGLE_LINE_TEXT",
      "value": "undefined"
    }

そんな時に、レコード詳細画面と編集画面で似たような処理をしたい時に役立つ判定文を紹介します。

「文字列1行」フィールドがnullもしくはundefinedじゃない時に何か処理をしたい場合は次のように書きます。

1
2
3
4
const record = kintone.app.record.get();
if (record.record['文字列__1行__0'].value) {
  // ここに処理したい内容を書く
}

っあれ?思ったより簡単ですね!

ifでの評価結果は、nullでもundefinedでも空文字でもfalseになるのでこんなに簡単に書けちゃいます。

数値の0や空文字''もfalseと評価されます。
一方、空の配列[]や、空のオブジェクト{}はtrueと評価されるので注意しましょう。

評価
null false
undefined false
0(数値) false
-0(数値) false
''(空文字) false
false false
[] true
{} true
-1(0または-0以外の数値) true
'0'(文字列) true
true true

これで画面による戻り値の違いも気にせずプログラムが書けますね!

information

このTipsは、2022年12月版kintoneで動作を確認しています。