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

Conversation

nasty23-star
Copy link
Contributor

@nasty23-star nasty23-star commented Nov 20, 2024

Описание

Closes #5558

Чек-лист

  • Текст оформлен согласно руководству по стилю
  • Ссылки на внутренние материалы начинаются со слеша и заканчиваются слэшем либо якорем на заголовок (/css/color/, /tools/json/, /tools/gulp/#kak-ponyat)
  • Ссылки на картинки, видео и демки относительные (images/example.png, demos/example/, ../demos/example/)

@github-actions github-actions bot added js Контент по JavaScript дока Справочный материал labels Nov 20, 2024
@nasty23-star nasty23-star self-assigned this Nov 20, 2024
Copy link

Превью контента из bbe2a91 опубликовано.

@@ -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.

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

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`:

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

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

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


```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)

@@ -171,3 +172,22 @@ console.log(episodesPerSeasons.includes(8))
console.log(episodesPerSeasons.includes(6))
// true
```

Интересно, что если в массиве будут индексы с пропусками (например, в результате некорректной работы с методами массивов или некорректной вставки новых элементов), то можно получить разреженный массив. Предположим, у нас есть набор элементов:
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
Интересно, что если в массиве будут индексы с пропусками (например, в результате некорректной работы с методами массивов или некорректной вставки новых элементов), то можно получить разреженный массив. Предположим, у нас есть набор элементов:
Интересно, что если в массиве будут индексы с пропусками (например, в результате некорректной работы с методами массивов или некорректной вставки новых элементов), то можно получить разреженный массив. Предположим, у нас есть набор элементов:

@TatianaFokina TatianaFokina added the улучшение Доработка существующего label Nov 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
js Контент по JavaScript дока Справочный материал улучшение Доработка существующего
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Что такое "разреженный массив" и какая у него будет длина?
3 participants