配列キー値の存在チェック

配列・連想配列のキーが存在するかのチェック方法のまとめ。

通常配列のキー存在チェック

チェック方法は、単純にif文に直接条件として設定すればよいです。

var foo = [];
foo.push("bar");
foo.push("baz");

if (foo[0]) {
  console.log(foo[0]);
}

連想配列のキー存在チェック

連想配列もチェック方法は同じで、if文に直接条件設定。

var foo = [];
foo["bar"] = "barbar";
foo["baz"] = "bazbaz";

if (foo["bar"]) {
  console.log(foo["bar"]);
}

ドット記法であっても同じ。

var foo = [];
foo["bar"] = "barbar";
foo["baz"] = "bazbaz";

if (foo.bar]) {
  console.log(foo.bar]);
}

連想配列(ハッシュ)のキー存在チェック

これまた連想配列(ハッシュ)でもチェック方法は同じで、if文に直接条件設定。

var foo = {
  bar: "barbar",
  baz: "bazbaz"
};

if (foo.bar) {
  console.log(foo.bar);
}

要素は存在するがfalseが返ってしまう問題

上記のような方法でもよいのですが、要素が存在してもその値が、nullやundefined・空白だとfalseが返ってしまいます。

var foo = [];
foo["bar"] = null;
foo["baz"] = "bazbaz";

if (foo["bar"]) {  // falseになってしまう
  console.log(foo["bar"]);
}

そこで、in演算子を使用してチェックを行います。

var foo = [];
foo["bar"] = null;
foo["baz"] = "bazbaz";

if ("bar" in foo) {  // trueになる!
  console.log(foo["bar"]);
}

参考サイト

in演算子(MDN)
https://developer.mozilla.org/ja/docs/JavaScript/Reference/Operators/in