1.7Kпросмотров
56.4%от подписчиков
2 апреля 2025 г.
questionScore: 1.9K
Как создать массив фиксированной длины? На самом деле, способов множество. Можно создать простой массив пустых элементов:
Array(100) Но тогда будет проблема с тем, чтобы его заполнить. Решить её очень просто — можно просто заполнить массив через метод fill:
Array(100).fill(0) Или мы можем попробовать вызвать метод map и заполнить массив индексами:
Array(100).map((_, index) => index) Пробуйте угадать что получится в ходе выполнения кода выше😂 Ответ:
⬇️ Получится [empty × 100], а не массив индексов) Тут дело в том, что при вызове Array(100) у нас изначально создаётся "разряженный" массив. Это когда под каждый элемент массива даже память не выделяется. Язык просто создаёт пустую структуру с полем length в значении 100 А что будет, если вызвать вот такой код?
Object.keys(Array(100)).length Ответ: ноль, потому что значений в массиве по сути то и нет. Поэтому и map не работает Поэтому если мы хотим использовать map, то придётся использовать вот такой хак:
[...Array(100)].map((_, index) => index)
Такая конструкция уже превратит разряженный массив в массив из сотни undefined и позволит вызвать map Мой любимый способ, который я использую всегда в подобных кейсах:
Array.from({ length: 100 }) Мне так привычнее и синтаксически наиболее понятно. Да и ещё фишка в том, что вторым аргументом в from можно сразу передать функцию-маппер:
Array.from({ length: 100 }, () => 'привет') Ну или прям совсем в лоб, про такое тоже не забываем:
const array = [] for (let i = 0; i < 100; i++) { array.push('progway')
} Спасибо за прочтение, это важно для меня ❤️ @prog_way_blog — чат — #web #javascript #theory #data