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 3 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
```

Интересно, что если в массиве будут индексы с пропусками (например, в результате некорректной работы с методами массивов или некорректной вставки новых элементов), то можно получить разреженный массив. Предположим, у нас есть набор элементов:
Copy link
Contributor

@vitya-ne vitya-ne Nov 21, 2024

Choose a reason for hiding this comment

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

если в массиве будут индексы с пропусками (например, в результате некорректной работы с методами массивов или некорректной вставки новых элементов)

Мне кажется, наличие пропусков (empty slots) и сам разряженный массив (sparse array), это вовсе не результат некорректной работы.
Самый простой пример:

const array = Array(10)
console.log(array)
// [ <10 empty items> ]

Поэтому, я бы предложил не использовать "некорректность".

Наверное, тут бы очень подошёл демо-пример с демонстрацией изменение размера массива.

// Зрители, которые заняли три места в ряду. Индексы их мест: 0,1, 2
const audience = [🐸, 🐶, 🐱  ]
// опоздавший зритель занял место в темноте и не попорядку!
audience[5] = 🐌
// места с индексами 3 и 4 всё ещё свободны, и это логично!
console.log(audience)
.// Array(6) [ "🐸", "🐶", "🐱", <2 empty slots>, "🐌" ]

Copy link
Contributor Author

@nasty23-star nasty23-star Nov 21, 2024

Choose a reason for hiding this comment

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

мб это контекста зависит, ожидают, что будут пропуски или нет
но ты прав, надо другую формулировку. подумаю как лучше

Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
Интересно, что если в массиве будут индексы с пропусками (например, в результате некорректной работы с методами массивов или некорректной вставки новых элементов), то можно получить разреженный массив. Предположим, у нас есть набор элементов:
Если в массиве будут индексы с пропусками, можно получить разрежённый массив. Например, индексы с пропусками в результате некорректной работы с методами массивов или неправильной вставки новых элементов. Предположим, у нас есть набор элементов:
Suggested change
Интересно, что если в массиве будут индексы с пропусками (например, в результате некорректной работы с методами массивов или некорректной вставки новых элементов), то можно получить разреженный массив. Предположим, у нас есть набор элементов:
Интересно, что если в массиве будут индексы с пропусками (например, в результате некорректной работы с методами массивов или некорректной вставки новых элементов), то можно получить разреженный массив. Предположим, у нас есть набор элементов:


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

Добавив к этому массиву ещё один элемент, чтобы его индекс был больше длины массива, мы получим массив с дырой, имеющей значение `undefined`:
Copy link
Contributor

@vitya-ne vitya-ne Nov 21, 2024

Choose a reason for hiding this comment

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

Suggested change
Добавив к этому массиву ещё один элемент, чтобы его индекс был больше длины массива, мы получим массив с дырой, имеющей значение `undefined`:
Добавив к этому массиву ещё один элемент, чтобы его индекс был больше длины массива, получим массив с незаполненным элементом (empty slot). Если обратиться к незаполненному элементу, получим `undefined`:


```js
arr[5] = '!'
console.log(arr) // выведет ['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.

Suggested change
console.log(arr) // выведет ['d', 'o', 'k', 'a', , '!']
// Выведет ['d', 'o', 'k', 'a', , '!']
console.log(arr)

```

Длина массива будет включать в себя не только элементы, но и все пустые места, то есть в нашем случае не 5 элементов, а 6:
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
Длина массива будет включать в себя не только элементы, но и все пустые места, то есть в нашем случае не 5 элементов, а 6:
Длина массива будет включать в себя не только элементы имеющие значения, но и все незаполненные элементы (empty slots), то есть в нашем случае не 5 элементов, а 6:


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

Choose a reason for hiding this comment

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

Suggested change
console.log(arr.length) // выведет 6
// Выведет 6
console.log(arr.length)

```
Loading