Вопрос проверяет понимание производительности создания массивов в JavaScript и разницы между предварительным выделением памяти и динамическим расширением.
Когда вы создаете массив с помощью Array.from({length: n}), движок JavaScript сразу выделяет память под n элементов. Это позволяет избежать многократных операций перераспределения памяти, которые происходят при использовании push в цикле.
При вызове push массив динамически расширяется. Если текущая емкость массива недостаточна, движок выделяет новый блок памяти (обычно в 1.5-2 раза больше текущего размера) и копирует все существующие элементы. Это приводит к дополнительным затратам времени и памяти.
// Медленный способ с push
const arr = [];
for (let i = 0; i < 100000; i++) {
arr.push(i);
}
// Быстрый способ с Array.from
const arr = Array.from({length: 100000}, (_, i) => i);Array.from с длиной, когда заранее известен размер массиваВывод: Array.from с предварительным выделением длины предпочтительнее для создания массивов фиксированного размера, особенно при работе с большими объемами данных, так как минимизирует накладные расходы на перераспределение памяти.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию