質問: true) { alert("exist"); } } ``` colsole.log()の結果 arrの中身 [ 0: "cmnt", 1: "bbbb", length: 2 ] listsの中身 [object Object] { [functions]: , cmnt: "afasefase546544444444444444444444444f", bbbb: "ああ", }
回答: `key in arr` を使っている部分が間違っています。 `arr.indexOf(key)` なら、 0 以上が返れば見つかったという意味で、 -1 が返れば見つからないという意味になります。 これを使えば解決できます。 `~arr.indexOf(key)` だと見つかった時に 0 以外の値となります。 また配列の新しい `arr.includes(key)` メソッドを使うことも できますが、環境により動作しない環境もあるでしょう。 `key in obj` が使える様にオブジェクトのキーに しておくのが一番いいんでしょうね。 ``` var lists = {aaaa:1, bbbb:2}; var arr = ['cmnt', 'bbbb', 'cccc']; console.log('lists:', lists); console.log('arr:', arr); for (var key in lists) { if (~arr.indexOf(key)) { alert('exist1:' + key); } } var obj = {}; for (var i = 0; i < arr.length; ++i) obj[arr[i]] = true; for (var key in lists) { if (key in obj) { alert('exist2:' + key); } } for (var key in lists) { if (arr.includes(key)) { alert('exist3:' + key); } } ```