diff --git a/js/arrays/index.md b/js/arrays/index.md index e82557449b..ed43d01264 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,36 @@ console.log(episodesPerSeasons.includes(8)) console.log(episodesPerSeasons.includes(6)) // true ``` + +Интересно, что если в массиве будут индексы с пропусками, то можно получить разреженный массив. Предположим, у нас есть набор элементов: + +```js +const arr = ['d', 'o', 'k', 'a'] +``` + +Добавим к этому массиву ещё один элемент, чтобы его индекс был больше длины массива. Мы получили массив с незаполненным элементом (empty slot). Если обратиться к незаполненному элементу по индексу, получим `undefined`: + +```js +arr[5] = '!' +// Выведет ['d', 'o', 'k', 'a', , '!'] +console.log(arr) +``` + +Длина массива будет включать в себя не только элементы, но и все незаполненные элементы, то есть в нашем случае не 5 элементов, а 6: + +```js +// Выведет 6 +console.log(arr.length) +``` + +Или можно взять другой пример: + +```js +// Зрители, которые заняли три места в ряду. Индексы их мест: 0,1, 2 +const audience = [🐸, 🐶, 🐱 ] +// опоздавший зритель занял место в темноте и не попорядку! +audience[5] = 🐌 +// места с индексами 3 и 4 всё ещё свободны, и это логично! +console.log(audience) +.// Array(6) [ "🐸", "🐶", "🐱", <2 empty slots>, "🐌" ] +```