Свойство .length
массива представляет наивысший индекс плюс один в массиве, которому было присвоено значение.
Если вы не назначаете промежуточные значения (и, следовательно, имеете разреженный массив), промежуточные значения, которые вы не назначили, являются undefined
, что по сути является значением «ничего здесь» в Javascript. Консоль выбирает отображение массивов, пытаясь показать вам каждое значение между 0
и концом массива, который просто не очень хороший способ отображать разреженный массив, который в основном пуст. Это скорее артефакт выбора дизайна в консоли, чем что-либо еще. Можно было бы разработать другой способ отображения содержимого массива, который по-разному обрабатывал бы разреженные массивы.
Массивы наиболее эффективны, если вы используете последовательные индексы, начиная с 0
. Это то, для чего они в основном предназначены и для чего оптимизированы многие реализации, поскольку среда выполнения может делать некоторые оптимизированные вещи, если она знает, что существует последовательный набор значений.
Если вы знаете, что вы собираетесь в основном не использовать последовательности числовых индексов, начиная с 0
и как таковой .length
собственности мало пользы для вас, то, возможно, простой объект с произвольными свойствами является лучшим выбор.
var mydata = {};
mydata[13525] = 1;
console.log(mydata[13525]); // 1
console.log(mydata.length); // undefined - no .length property on an object
console.log(myData); // {1: 13525}
Как вы напечатав массив? –
console.log (mydata); – NicolasZ