> Какие элементы и в каком порядке хранятся в результирующем массиве в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Avito
Стек: JavaScript
> Пример ответа
В JavaScript порядок хранения элементов в результирующем массиве зависит от метода, который его создаёт. Рассмотрим основные случаи:
-
Array.prototype.map()- возвращает новый массив той же длины, элементы расположены в том же порядке, что и в исходном массиве. Например,[1, 2, 3].map(x => x * 2)→[2, 4, 6]. -
Array.prototype.filter()- возвращает массив с элементами, прошедшими проверку, в порядке их появления в исходном массиве. Пропущенные элементы не включаются. Например,[1, 2, 3, 4].filter(x => x > 2)→[3, 4]. -
Array.prototype.reduce()- возвращает одно значение (не массив), но если аккумулятор - массив, то порядок определяется логикой редьюсера. Обычно сохраняется исходный порядок, если не используетсяunshift. -
Array.prototype.concat()- объединяет массивы в порядке их перечисления: сначала элементы первого массива, затем второго и т.д. Например,[1, 2].concat([3, 4])→[1, 2, 3, 4]. -
Array.prototype.flat()- раскрывает вложенные массивы в порядке обхода слева направо, сохраняя последовательность. Например,[1, [2, [3]]].flat(2)→[1, 2, 3]. -
Array.from()- создаёт массив из итерируемого объекта, элементы располагаются в порядке итерации. Например,Array.from('abc')→['a', 'b', 'c']. -
Array.prototype.sort()- изменяет порядок на месте, но если нужно получить новый массив, то после сортировки элементы идут в порядке, определённом функцией сравнения (по умолчанию - лексикографический). -
Оператор spread (
...) - разворачивает итерируемый объект в новый массив, сохраняя порядок итерации.
Таким образом, в большинстве случаев результирующий массив хранит элементы в том же порядке, что и исходный, за исключением методов, которые явно изменяют порядок (например, sort, reverse).
> Похожие задачи по frontend
Как предотвратить всплытие события при клике на вложенные контейнеры в JavaScript
Как досрочно выйти из метода map в JavaScript
Как сделать функцию вызываемой через точку в JavaScript
Как реализовать функцию isNaN без использования Object.is в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью