diff --git a/js/arrays/index.md b/js/arrays/index.md index e82557449b..82b0c3797d 100644 --- a/js/arrays/index.md +++ b/js/arrays/index.md @@ -5,6 +5,7 @@ authors: - nlopin contributors: - furtivite + - anastasiayarosh related: - js/ref-type-vs-value-type - js/typecasting @@ -171,3 +172,42 @@ console.log(episodesPerSeasons.includes(8)) console.log(episodesPerSeasons.includes(6)) // true ``` + +Интересно, что если в массиве будут индексы с пропусками, то можно получить разрежённый массив. Предположим, у нас есть набор элементов: + +```js +const arr = ['d', 'o', 'k', 'a'] +``` + +Добавим к нему ещё один элемент, так, чтобы его индекс был больше длины всего набора элементов. Мы получим массив с незаполненным элементом (empty slot). Если обратимся к нему по индексу, получим `undefined`: + +```js +arr[5] = '!' + +console.log(arr) +// Выведет в Firefox ['d', 'o', 'k', 'a', <1 empty slot>, '!'] + +console.log(arr[4]) +// Выведет undefined +``` + +Длина массива будет включать в себя все элементы, включая незаполненные, то есть в нашем случае не 5 элементов, а 6: + +```js +console.log(arr.length) +// Выведет 6 +``` + +Или мы можем взять другой пример: + +```js +// Зрители, которые заняли три места в ряду. Индексы их мест: 0, 1, 2 +const audience = ['🐸', '🐶', '🐱'] + +// Опоздавший зритель занял место в темноте и не по порядку! +audience[5] = '🐌' + +// Места с индексами 3 и 4 всё ещё свободны, и это логично! +console.log(audience) +// Array(6) [ '🐸', '🐶', '🐱', <2 empty slots>, '🐌' ] +```