Проверяет понимание различий между методами массива filter и forEach в JavaScript, включая их назначение и возвращаемые значения.
Методы forEach и filter оба перебирают элементы массива, но выполняют разные задачи. forEach просто вызывает переданную функцию для каждого элемента, игнорируя возвращаемое значение, и всегда возвращает undefined. Он используется для выполнения побочных эффектов, таких как вывод в консоль или изменение внешних переменных. filter же создаёт новый массив, включающий только те элементы, для которых функция-предикат вернула true. Исходный массив остаётся неизменным, что соответствует принципу иммутабельности.
Рассмотрим массив чисел и попробуем отфильтровать чётные числа:
const numbers = [1, 2, 3, 4, 5];
// forEach — просто перебор, результат не сохраняется
numbers.forEach(num => {
console.log(num * 2); // выводит 2, 4, 6, 8, 10
});
// filter — возвращает новый массив с чётными числами
const evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // [2, 4]
console.log(numbers); // [1, 2, 3, 4, 5] — исходный массив не изменёнВ первом случае forEach используется для вывода удвоенных значений, но результат не сохраняется. Во втором случае filter возвращает новый массив, который можно использовать дальше.
forEach, когда нужно выполнить действие для каждого элемента (например, отправить запрос, обновить DOM, записать в лог) и не требуется новый массив.filter, когда нужно получить подмножество элементов, удовлетворяющих условию, и сохранить его для дальнейшей обработки.Также стоит отметить, что filter можно комбинировать с другими методами, такими как map или reduce, для построения цепочек обработки данных.
Выбирайте forEach для побочных эффектов без возврата значения, а filter — для создания нового отфильтрованного массива. Это делает код более читаемым и предсказуемым, особенно в функциональном стиле программирования.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию