7.3. Разреженные массивы
Разреженным называется массив, индексы элементов которого не образуют непрерывную последовательность чисел, начиная с 0. Обычно свойство length массива определяет количество элементов в массиве. В разреженном массиве значение свойства length больше количества элементов. Разреженный массив можно создать с помощью конструктора Аггау() или путем присваивания значения элементу с индексом, большим, чем текущая длина массива.
а = new Array(5); // Нет элементов, но a.length имеет значение 5.
а = []; // Создаст пустой массив со значением length = 0.
а[1000] = 0; // Добавит один элемент, но установит длину равной 1001.
Далее будет показано, что разреженный массив можно также создать с помощью оператора delete.
Существенно разреженные массивы обычно более медленны и потребляют больше памяти, чем плотные массивы, а поиск элементов в таких массивах занимает примерно столько же времени, что и поиск обычных свойств объектов.
Обратите внимание, что литералы с пропущенными значениями (когда в определении подряд следуют запятые, например [1, ,3]) создают разреженные массивы, в которых пропущенные элементы просто не существуют:
var a1 = [,]; // Массив без элементов с длиной, равной 1
var а2 = [undefined]; // Массив с одним неопределенным элементом
О in а1 // => false: а1 не имеет элемента с индексом О
О in а2 // => true: а2 имеет элемент с индексом 0 и со значением undefined
Некоторые старые реализации (такие как Firefox 3) некорректно вставляли элементы со значением undefined на место пропущенных элементов. В этих реализациях литерал [1,,3] был эквивалентен литералу [1, undefined,3].
Больше книг — больше знаний!
Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ