ниже код возвращает длину массиване может получить правильную длину массива
var test=[];
test["abc"]=1;
test["abcd"]=11;
console.log(test.length);
Я ожидал, что он выводит 2 , но он показывает 0
Ваш комментарий Добро пожаловать
ниже код возвращает длину массиване может получить правильную длину массива
var test=[];
test["abc"]=1;
test["abcd"]=11;
console.log(test.length);
Я ожидал, что он выводит 2 , но он показывает 0
Ваш комментарий Добро пожаловать
Вы должны подсчитать количество ключей с помощью Object.keys
:
console.log(Object.keys(test).length); // 2
В идеале, не следует использовать массив, но равнину JavaScript объект (также называемый хэш):
var test = {};
test.abc = 1;
test.abcd = 11;
Вы Арен» t фактически добавляя любые элементы в массив, это создает свойства объекта массива.
Вы можете сказать, что я говорю правду, введя это:
console.log(test.abc);
console.log(test.abcd);
length
бы, вероятно, увеличивается, если вы добавили элементы с помощью push()
или установить их с помощью числовой индекс, как:
test[0] = 1;
test[1] = 2;
Если вы хотите, чтобы добавить элементы в массив с помощью
array[0] = 1;
array[1] = 11;
В противном случае вы добавление свойств в массив
Ваша проблема связана с непониманием того, что происходит в массиве и в массиве Javascript.
В Javascript array
указан как тип определенного типа, состоящий только из числовых клавиш.
.length
- это специальное свойство объекта массива, которое привязано к значению наибольшего числового ключа в массиве.
С помощью таких клавиш, как "abc"
, вы фактически просто устанавливаете произвольные свойства объекта; собственность length
будет полностью не затронута этим.
У вас есть два варианта:
Используйте цифровые клавиши для вашего массива.
Если вам нужно использовать именованные ключи, вам необходимо принять, что свойство length
и другие функции, относящиеся к массиву, недоступны. Таким образом, вы можете использовать обычный объект, а не массив.
Все еще можно считать элементы в объекте, но это не так просто, как просто использовать свойство length
.
Вы добавляете свойства, о которых идет речь в ответах, но почему бы не использовать объект JavaScript var test = {} и вместо этого добавить в него свойства? – MedAli