質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

5265閲覧

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

ajijek

総合スコア16

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/01/14 02:24

編集2017/01/14 02:24

listsの中をループさせキーが存在したら
アラートを出すような、サンプルコードです。
下記の方法で、配列arrには'cmnt'をpushしており
ますが、forで回したときにlistsの中身をループさせ
keyに'cmnt'が入っているのですが、「key in arr」で
なぜかfalseが入ってきてしまいます。
理由がわからないのでご教授いただけますと幸いです。

var arr = new Array(); arr.push('cmnt'); arr.push('bbbb'); for (var key in lists) { if (key in arr == true) { alert("exist"); } }

colsole.log()の結果

arrの中身
[
0: "cmnt",
1: "bbbb",
length: 2
]

listsの中身
[object Object]
{
[functions]: ,
cmnt: "afasefase546544444444444444444444444f",
bbbb: "ああ",
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

in演算子はkeyを検索します。

javascript

1var trees = ["redwood", "bay", "cedar", "oak", "maple"]; 20 in trees // true を返す 33 in trees // true を返す 46 in trees // false を返す 5"bay" in trees // false を返す (インデックスの指す値ではなく、 6 // インデックスの数字を指定しなければならない) 7"length" in trees // true を返す (length は Array のプロパティ)

in - JavaScript リダイレクト 1 | MDN

投稿2017/01/14 03:45

Lhankor_Mhy

総合スコア35865

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

key in arr を使っている部分が間違っています。

arr.indexOf(key) なら、
0 以上が返れば見つかったという意味で、
-1 が返れば見つからないという意味になります。
これを使えば解決できます。

~arr.indexOf(key) だと見つかった時に 0 以外の値となります。

また配列の新しい arr.includes(key) メソッドを使うことも
できますが、環境により動作しない環境もあるでしょう。

key in obj が使える様にオブジェクトのキーに
しておくのが一番いいんでしょうね。

js

1var lists = {aaaa:1, bbbb:2}; 2var arr = ['cmnt', 'bbbb', 'cccc']; 3 4console.log('lists:', lists); 5console.log('arr:', arr); 6 7for (var key in lists) { 8 if (~arr.indexOf(key)) { 9 alert('exist1:' + key); 10 } 11} 12 13var obj = {}; 14for (var i = 0; i < arr.length; ++i) 15 obj[arr[i]] = true; 16 17for (var key in lists) { 18 if (key in obj) { 19 alert('exist2:' + key); 20 } 21} 22 23for (var key in lists) { 24 if (arr.includes(key)) { 25 alert('exist3:' + key); 26 } 27}

投稿2017/01/14 06:43

LightSpeedC

総合スコア26

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問