2013-11-25 4 views
1

ниже код возвращает длину массиване может получить правильную длину массива

var test=[]; 
test["abc"]=1; 
test["abcd"]=11; 
console.log(test.length); 

Я ожидал, что он выводит 2 , но он показывает 0

Ваш комментарий Добро пожаловать

+0

Вы добавляете свойства, о которых идет речь в ответах, но почему бы не использовать объект JavaScript var test = {} и вместо этого добавить в него свойства? – MedAli

ответ

3

Вы должны подсчитать количество ключей с помощью Object.keys:

console.log(Object.keys(test).length); // 2 

В идеале, не следует использовать массив, но равнину JavaScript объект (также называемый хэш):

var test = {}; 
test.abc = 1; 
test.abcd = 11; 
3

Вы Арен» t фактически добавляя любые элементы в массив, это создает свойства объекта массива.

Вы можете сказать, что я говорю правду, введя это:

console.log(test.abc); 
console.log(test.abcd); 

length бы, вероятно, увеличивается, если вы добавили элементы с помощью push() или установить их с помощью числовой индекс, как:

test[0] = 1; 
test[1] = 2; 
0

Если вы хотите, чтобы добавить элементы в массив с помощью

array[0] = 1; 
array[1] = 11; 

В противном случае вы добавление свойств в массив

1

Ваша проблема связана с непониманием того, что происходит в массиве и в массиве Javascript.

В Javascript array указан как тип определенного типа, состоящий только из числовых клавиш.

.length - это специальное свойство объекта массива, которое привязано к значению наибольшего числового ключа в массиве.

С помощью таких клавиш, как "abc", вы фактически просто устанавливаете произвольные свойства объекта; собственность length будет полностью не затронута этим.

У вас есть два варианта:

  1. Используйте цифровые клавиши для вашего массива.

  2. Если вам нужно использовать именованные ключи, вам необходимо принять, что свойство length и другие функции, относящиеся к массиву, недоступны. Таким образом, вы можете использовать обычный объект, а не массив.

    Все еще можно считать элементы в объекте, но это не так просто, как просто использовать свойство length.

Смежные вопросы