かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

JS オブジェクトのキーがあるかチェックしたい。

オブジェクト({})のキーが存在しているか調べる時、if文を使うと値によっては上手くいかない。

var obj = {
  A: 0,
  B: 1,
  C: 2,
  D: ""
};
var foo;
obj.E = foo;

["A", "B", "C", "D", "E", "F"].forEach(function(key) {
  if( obj[key] ) {
    console.log( obj[key] );
  }
});

👇 出力

B 1
C 2

key in object を使えばOK

["A", "B", "C", "D", "E", "F"].forEach(function(key) {
  if( key in obj ) {
    console.log( key, obj[key] );
  }
});

👇 出力

A 0
B 1
C 2
D ""
E undefined

配列の値の有無をチェックしたい場合

配列(Array)はindexOfをを使うと値があればそのインデックスを返してくれるので、結果が -1 でなければ値があると判定することができる。

var arr = [2, true, false, '', -1, null, undefined];

arr.indexOf(2); // 0
arr.indexOf(false); // 2

// 空文字もOK
arr.indexOf(''); // 3 

// null や undefined も大丈夫
arr.indexOf(null); // 5
arr.indexOf(undefined); // 6

// 暗黙の型変換はしないっぽい
arr.indexOf("2"); // -1