2012-03-21 18 views
1

どうしたの?JavaScript配列の文字列要素を確認する

var colours = ['red','green', 'blue'] 
console.log('blue' in colours); // outputs false 

偽を出力すると、私はそれがtryeであるべきだと思ったでしょう。あなたがそこにあなたはそれのためにそのように確認することができませんArrayを扱っているので

おかげ

+1

問題はJavaScriptで 'in'オペレータが、それは例えばあるほど素敵ではないということですPythonで。 – ThiefMaster

答えて

6

Arraysのオファー何かがそこにあるかどうかを判断するために、あなたArray.prototype.indexOf方法:

console.log(colours.indexOf('blue') > -1); 

は説明:ECMAスクリプトで

配列がちょうどObjectsに特化されます。つまり、オブジェクトkeysのための唯一のチェックinオペレータは、あなたがそれで値をチェックすることはできませんので、あなたの配列が本当に

colours = { 
    0: 'red', 
    1: 'green', 
    2: 'blue' 
}; 

のように見えることを意味します。実際にtrueを返すif('1' in colours)を確認できますが、あまり意味がありません。ここでも、配列には.indexOf()を使用します。

サイドノート:ECMAscriptハーモニー(ES.Next、またはES6)は、キーの代わりにオブジェクト値を列挙するfor ofループです。 of演算子をinと同じ方法で使用できるかどうかはわかりませんが、非常に便利です。

1

使用colours.indexOf('blue')

1

これはオブジェクトでのみ機能します。オブジェクトにプロパティがあるかどうかをチェックします。

var colours = { red: 123, green: true, blue: "foo"};; 
console.log("blue" in colours); 

使用indexOf最近のブラウザで:

var colours = ['red','green', 'blue']; 
console.log(colours.indexOf("blue") != -1); 
関連する問題