2016-10-26 5 views
-1

配列にキーがあるかどうかを調べるために別のポストを読む( 'thing' in array)。単語を使用して、キーをチェックしようとしたときJavascript - すべての配列に「some」キーがありますか?

var capitals = []; 
if(!('California' in capitals)) 
    capitals['California'] = 'Sacramento'; 
alert("The capital is " + capitals['California']); 

の問題を有する「いくつかの」しかし、それはアレイ法だから:

var arr = []; 
var mykey = 'some'; 
if(mykey in arr) 
    alert("the word 'some' is in the array, value: " + arr[mykey]); 

警告がある:単語「一部」の配列である、値:関数some(){[native code]}

キー 'some'で配列に何も設定しませんでしたが、 "in"はメソッドなので肯定を返します。 「some」という言葉が英語ではよくあることを考えれば、「some」が予約キーであれば、英語の文章の索引付けはどうすればいいですか?

https://jsfiddle.net/fcmjL728/

+0

[ 'Map'(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)を使用するか、オブジェクトなしプロトタイプ( 'Object.create(null)')であり、配列ではありません。 –

+0

[some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)はArrayのメソッドです。 –

+0

'in'演算子はオブジェクトの値をチェックせず、キーをチェックします。配列には、整数キーとそのプロトタイプの関数しかありません。 – 4castle

答えて

0

someが配列させる方法であるので、あなたは、カウントのために空のオブジェクトを使用することができます。

var string = 'This is an example with some content and with some more words to count', 
 
    count = Object.create(null); // a really empty object without prototypes from Object 
 

 
string.split(' ').forEach(function (a) { 
 
    var key = a.toLowerCase(); 
 
    count[key] = (count[key] || 0) + 1; 
 
}); 
 

 
console.log(count);

関連する問題