2010-11-02 150 views
1

爲什麼當這個非常基本的JavaScript數組只有3個鍵/值對時,它給了我13的長度。有意義的是,它可能會認爲13是基於0的索引,而我的最後一個數組的鍵是12,但我需要有任何具有鍵/值對的數組,它們會返回正確數量的對。鑰匙需要是數字。JavaScript數組長度鍵值

http://jsfiddle.net/fmgc8/1/

編輯:這是我如何解決它的感謝。

http://jsfiddle.net/fmgc8/4/

+0

您不能使用字符串來索引數組。 JavaScript正在將您的'12'轉換爲12 – Geoff 2010-11-02 11:29:06

回答

1

array['12']array[12]之間沒有diffrence(陣列['12' ]不被視爲關聯數組元素)。查找關聯數組length

6

那是因爲你擁有最高的數字是:

array['12'] = 'twelve'; 

這將創建一個13數組長度(因爲它是基於0的)。 JavaScript將擴展數組以分配它需要的點數以滿足指定的插槽。 array[0..9]在那裏,你只是沒有放置任何東西。

1

length數組的屬性返回對象的最大非負數字鍵,加上一個。這就是它的定義方式。

如果你想對鍵值對進行計數,你將不得不自己計算它們(或者通過跟蹤它們,因爲它們被添加和刪除,或者通過遍歷它們)。

1

或者,重新排列陣列是這樣的:

var array = []; 

array.push(['10','ten']);  
array.push(['11','eleven']);  
array.push(['12','twelfe']);   

alert(array.length);