2013-08-04 22 views
5

Ben ne denir emin değilim ama ne demek şudur: 'Adlandırılmış' dizinin uzunluğunu alma?

nasıl ben dizideki kaç nitelikleri görebilirsiniz

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

uzunluk burada 2 olmalıdır? Array.length

Sen hiç Object.keys() kullanabilirsiniz

+3

O bir nesne, bir dizi değil. – JJJ

+2

@Juhana: Ben * Dizi olabilir * fakat [o olmamalı] (http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/) – Bergi

cevap

6

Yardımlarınız için teşekkür ederim .. = (I her türlü şeyi deniyorum ve burada gerçekten basit bir şey eksik gibi hissediyorum çalışmıyor Eğer Object.keys() yok aksi ECMAScript 3 hedeflemesi veya eğer o zaman elle tuşları sayabilir,

Object.keys(array).length 

veya: tuşları bir dizi elde, sonra bunları saymak

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

böylece Mozilla's polyfill for Object.keys() yerine iyi bir fikir olabilir kullanarak, hedeflediğiniz tarayıcılarda bağlı olsa bu yaklaşımla birkaç kenar durumlar vardır.

+0

Woot, teşekkür ederim. Tam olarak ne gerekli, sorun –

+0

için üzgünüm 'Object.prototype.hasOwnProperty.call (anahtar dizisi) yapmak daha iyi olabilir @rid' ihtimale karşı 'array'' hasOwnProperty' –

+0

@PaulS bir özelliğe sahiptir. İyi orada daha epeyce kenar durumlardır, ama hepsi [Mozilla'nın polyfill] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys# tarafından ele ediyoruz Uyumluluk). Cevap güncellendi. – rid

İlgili konular