2013-08-04 13 views
5

Nie jestem pewien, co nazywane są, ale co mam na myśli to:Uzyskiwanie długości tablicy "nazwanej"?

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

długość powinna wynosić 2 tutaj

jak mogę zobaczyć ile mam atrybutów w tablicy? Array.length nie działa = (Próbowałem wielu rzeczy i czuję się jakbym brakuje coś naprawdę proste tutaj ..

Dziękuję za pomoc

+3

To nie jest tablica, to obiekt. – JJJ

+2

@Juhana: Mogę * być tablicą, ale [to nie powinno] (http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/) – Bergi

Odpowiedz

6

można użyć do Object.keys() uzyskać tablicę kluczy, a następnie policzyć:

Object.keys(array).length 

lub, jeśli kierujesz ECMAScript 3 lub w inny sposób nie mają Object.keys(), to można ręcznie liczyć kluczy:

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

W tym przypadku jest kilka przypadków skrajnych, w zależności od wybranych przeglądarek, więc zamiast tego dobrym pomysłem może być użycie Mozilla's polyfill for Object.keys().

+0

Woot, dziękuję. dokładnie to, czego potrzebowałem, przepraszam za kłopot. –

+0

@rid może lepiej byłoby zrobić 'Object.prototype.hasOwnProperty.call (array, key)' na wypadek, gdyby 'tablica' miał właściwość' hasOwnProperty' –

+0

@PaulS., dobrze , jest jeszcze kilka bardziej skrajnych przypadków, ale wszystkie są obsługiwane przez [polyfill Mozilli] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys# Zgodność). Odpowiedź zaktualizowana. – rid

Powiązane problemy