2013-08-04 16 views
5

Ich bin mir nicht sicher, was sie genannt werden, aber was ich meine, ist folgendes:Die Länge eines 'benannten' Arrays erhalten?

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

Länge 2 hier

sein sollte, wie kann ich sehen, wie viele Attribute ich im Array? array.length funktioniert nicht = (Ich habe alle möglichen Dinge versucht, und ich fühle mich wie ich hier etwas wirklich einfach fehlt bin ..

Danke für Ihre Hilfe

+3

Es ist kein Array, es ist ein Objekt. – JJJ

+2

@Juhana: Ich * könnte * ein Array sein, aber [sollte es nicht] (http://andrewdupont.net/2006/05/18/javascript-associative-arrays-consided-harmful/) – Bergi

Antwort

6

Sie Object.keys() nutzen könnten, um eine Reihe von Tasten erhalten, dann zählen sie:

Object.keys(array).length 

oder, wenn Sie Targeting ECMAScript 3 oder sonst nicht Object.keys() haben, dann können Sie die Schlüssel manuell zählen:

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

Es gibt jedoch einige Randfälle bei diesem Ansatz, abhängig von den Browsern, auf die Sie ausgerichtet sind. Daher kann es sinnvoll sein, stattdessen Mozilla's polyfill for Object.keys() zu verwenden.

+0

Woot, danke. genau das, was ich brauchte, Entschuldigung für das Problem –

+0

@ rid es könnte besser sein zu tun 'Object.prototype.hasOwnProperty.call (Array, Schlüssel)' nur für den Fall, dass Array hat eine Eigenschaft 'hasOwnProperty' –

+0

@PaulS., gut Es gibt noch einige Randfälle, die jedoch alle von [Mozillas Polyfill] behandelt werden (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys#). Kompatibilität). Antwort aktualisiert – rid

Verwandte Themen