Вопрос проверяет понимание ключевых методов массивов JavaScript и их различий, что важно для написания чистого и эффективного кода.
В JavaScript массивы предоставляют несколько встроенных методов для итерации и трансформации данных. Понимание различий между forEach, map, filter и reduce помогает писать более декларативный и читаемый код, избегая ручных циклов и временных переменных.
Метод forEach выполняет переданную функцию один раз для каждого элемента массива. Он не возвращает новый массив и не изменяет исходный (если только вы не мутируете элементы внутри). Его основное назначение — выполнение побочных эффектов, таких как вывод в консоль или изменение внешних переменных.
const numbers = [1, 2, 3];
numbers.forEach(num => console.log(num * 2)); // выводит 2, 4, 6Метод map создает новый массив, применяя функцию к каждому элементу исходного массива. Результат каждого вызова добавляется в новый массив. Это идеальный выбор для трансформации данных без изменения оригинала.
const doubled = numbers.map(num => num * 2); // [2, 4, 6]Метод filter возвращает новый массив, содержащий только те элементы, для которых функция-предикат возвращает true. Он используется для отбора элементов по условию.
const even = numbers.filter(num => num % 2 === 0); // [2]Метод reduce агрегирует все элементы массива в одно значение. Он принимает аккумулятор и текущий элемент, возвращая новое значение аккумулятора на каждой итерации. Это мощный инструмент для вычисления сумм, произведений, построения объектов и других сводных операций.
const sum = numbers.reduce((acc, num) => acc + num, 0); // 6Выбор правильного метода делает код более выразительным и уменьшает количество ошибок, связанных с ручным управлением индексами и состоянием.
Используйте forEach для побочных эффектов, map для трансформации, filter для фильтрации и reduce для агрегации. Эти методы покрывают большинство операций с массивами и являются стандартом в современном JavaScript-коде.