-
Notifications
You must be signed in to change notification settings - Fork 639
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
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
@@ -5,6 +5,7 @@ authors: | |||||||||
- nlopin | ||||||||||
contributors: | ||||||||||
- furtivite | ||||||||||
- anastasiayarosh | ||||||||||
related: | ||||||||||
- js/ref-type-vs-value-type | ||||||||||
- js/typecasting | ||||||||||
|
@@ -171,3 +172,22 @@ console.log(episodesPerSeasons.includes(8)) | |||||||||
console.log(episodesPerSeasons.includes(6)) | ||||||||||
// true | ||||||||||
``` | ||||||||||
|
||||||||||
Интересно, что если в массиве будут индексы с пропусками (например, в результате некорректной работы с методами массивов или некорректной вставки новых элементов), то можно получить разреженный массив. Предположим, у нас есть набор элементов: | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Suggested change
|
||||||||||
|
||||||||||
```js | ||||||||||
const arr = ['d', 'o', 'k', 'a'] | ||||||||||
``` | ||||||||||
|
||||||||||
Добавив к этому массиву ещё один элемент, чтобы его индекс был больше длины массива, мы получим массив с дырой, имеющей значение `undefined`: | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
|
||||||||||
```js | ||||||||||
arr[5] = '!' | ||||||||||
console.log(arr) // выведет ['d', 'o', 'k', 'a', , '!'] | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
``` | ||||||||||
|
||||||||||
Длина массива будет включать в себя не только элементы, но и все пустые места, то есть в нашем случае не 5 элементов, а 6: | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
|
||||||||||
```js | ||||||||||
console.log(arr.length) // выведет 6 | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Мне кажется, наличие пропусков (empty slots) и сам разряженный массив (sparse array), это вовсе не результат некорректной работы.
Самый простой пример:
Поэтому, я бы предложил не использовать "некорректность".
Наверное, тут бы очень подошёл демо-пример с демонстрацией изменение размера массива.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
мб это контекста зависит, ожидают, что будут пропуски или нет
но ты прав, надо другую формулировку. подумаю как лучше