(小技)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 で動作を確認しています。