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
20 changes: 20 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,22 @@ console.log(episodesPerSeasons.includes(8))
console.log(episodesPerSeasons.includes(6))
// true
```

Интересно, что если в массиве будут индексы с пропусками (например, в результате некорректной работы с методами массивов или некорректной вставки новых элементов), то можно получить разреженный массив. Предположим, у нас есть набор элементов:
nasty23-star marked this conversation as resolved.
Show resolved Hide resolved
nasty23-star marked this conversation as resolved.
Show resolved Hide resolved

```js
const arr = ['d', 'o', 'k', 'a']
```

Добавив к этому массиву ещё один элемент, чтобы его индекс был больше длины массива, мы получим массив с дырой, имеющей значение `undefined`:
nasty23-star marked this conversation as resolved.
Show resolved Hide resolved

```js
arr[5] = '!'
console.log(arr) // выведет ['d', 'o', 'k', 'a', , '!']
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
console.log(arr.length) // выведет 6
nasty23-star marked this conversation as resolved.
Show resolved Hide resolved
```
Loading