2010-11-02 3 views
1

Почему этот чрезвычайно простой массив JavaScript дает мне длину 13, когда в нем всего 3 пары ключ/значение. Имеет смысл, что это может показаться 13 как индекс на основе 0, а мой последний массив имеет ключ из 12, но мне нужно иметь любой массив, у которого есть пара ключ/значение, которая возвращает мне правильное количество пар. Ключи должны быть номерами.Длина массива JavaScript Array

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

EDIT: это как я решил это спасибо.

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

+0

, вы не можете использовать строки для индексации массива. javascript конвертирует ваши «12» в 12 – Geoff

ответ

1

Там нет разностного между array['12'] и array[12] (массив ['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);