Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавляет нюанс про разреженный массив #5559

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
34 changes: 34 additions & 0 deletions js/arrays/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ authors:
- nlopin
contributors:
- furtivite
- anastasiayarosh
related:
- js/ref-type-vs-value-type
- js/typecasting
Expand Down Expand Up @@ -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`:
nasty23-star marked this conversation as resolved.
Show resolved Hide resolved

```js
arr[5] = '!'
// Выведет ['d', 'o', 'k', 'a', , '!']
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

у меня в консоли
['d', 'o', 'k', 'a', empty, '!'] или [ "d", "o", "k", "a", <1 empty slot>, 5 ] в фаерфоксе. Подскажи, в какой консоли у тебя получился такой инпут?

console.log(arr)
```
nasty23-star marked this conversation as resolved.
Show resolved Hide resolved

Длина массива будет включать в себя не только элементы, но и все пустые места, то есть в нашем случае не 5 элементов, а 6:
nasty23-star marked this conversation as resolved.
Show resolved Hide resolved
nasty23-star marked this conversation as resolved.
Show resolved Hide resolved

```js
// Выведет 6
console.log(arr.length)
```

Или можно взять другой пример:

```js
// Зрители, которые заняли три места в ряду. Индексы их мест: 0,1, 2
const audience = [🐸, 🐶, 🐱 ]
Comment on lines +200 to +201
Copy link
Contributor

@vitya-ne vitya-ne Nov 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// Зрители, которые заняли три места в ряду. Индексы их мест: 0,1, 2
const audience = [🐸, 🐶, 🐱 ]
// Зрители, которые заняли три места в ряду. Индексы их мест: 0, 1, 2
const audience = ["🐸", "🐶", "🐱"]

Тут лишние/недостающие пробелы и не хватает кавычек

// опоздавший зритель занял место в темноте и не попорядку!
audience[5] = 🐌
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
audience[5] = 🐌
audience[5] = "🐌"

// места с индексами 3 и 4 всё ещё свободны, и это логично!
console.log(audience)
.// Array(6) [ "🐸", "🐶", "🐱", <2 empty slots>, "🐌" ]
```
Loading