2013-08-04 10 views
5

私は彼らが呼び出されるかわからないんだけど、私が意味することはこれです:'名前付き'配列の長さを取得していますか?

array["water"] = 50; 
array["fire"] = 30; 

長さは、どのように私は配列を持っているどのように多くの属性を参照することができ、ここで2

すべきですか? Array.lengthとは

あなたはObject.keys()にを使用することができ、あなたの助け

+3

これは配列ではなく、オブジェクトです。 – JJJ

+2

@Juhana:配列にすることはできますが、それはできません(http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/) – Bergi

答えて

6

いただきありがとうございます..私はあらゆる種類のものをしようとしてきたと私はここで本当に簡単に何かが欠けてるように私は感じる(=動作しません。それらをカウントし、その後、キーの配列を取得します。

Object.keys(array).length 

それとも、あなたはECMAScriptの3をターゲットにしているか、そうでない場合はObject.keys()を持っていない場合は、手動でキーを数えることができます。

var length = 0; 
for (var key in array) { 
    if (array.hasOwnProperty(key)) { 
     ++length; 
    } 
} 

このアプローチでは、対象とするブラウザによっていくつかのケースがあるので、代わりにMozilla's polyfill for Object.keys()を使用するとよいでしょう。

+0

Woot、ありがとう。私が必要としていたことを、ごめんなさい。 –

+0

@rid 'array'がプロパティ' hasOwnProperty'を持っている場合の 'Object.prototype.hasOwnProperty.call(array、key)'を実行する方が良いでしょう。 –

+0

@PaulS。、wellかなりの数のエッジケースがありますが、それらはすべて[Mozillaのpolyfill]によって処理されます(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys#互換性)。回答が更新されました。 – rid

関連する問題