Когда вы устанавливаете значение числового индекса выше, чем текущий length
вашего массива, это влияет на свойство length
.
Вкратце, вы должны использовать Object
:
var data = {};
data[year] = "some data";
// or
var data = {
2009: "2009 data",
2010: "2010 data"
};
Теперь я отвечаю на вопрос: « Заполняет ли JavaScript пустые элементы массива? »
Нет, как я уже говорил, изменяется только свойство length
(при необходимости, только если добавленный индекс больше текущего length
), length
увеличивается на единицу больше, чем числовое значение этого индекса.
Методы Array.prototype
работают при условии, что у объекта массива будут индексы, начинающиеся с нуля.
Предыдущие индексы на самом деле не существуют в объекте Array
, вы можете проверить это:
var array = [];
array[10] = undefined;
array.hasOwnProperty(10); // true
array.hasOwnProperty(9); // false
В заключение, массивы должны содержать последовательные индексы, начиная с нуля, если ваши свойства не соответствуют этим требованиям, вы должны просто использовать объект.