JavaScript Find vs. Filter: понимание различий и вариантов использования

В JavaScript методы findи filterиспользуются для выполнения операций с массивами, но у них разные цели и поведение.

Метод

  1. find: метод findиспользуется для поиска первого элемента в массиве, который удовлетворяет заданному условию. В качестве аргумента он принимает функцию обратного вызова, которая выполняется для каждого элемента массива, пока не будет найдено совпадение. Как только совпадение найдено, метод findнемедленно возвращает значение этого элемента. Если ни один элемент не найден, возвращается undefined.

Пример:

const numbers = [1, 2, 3, 4, 5];
const evenNumber = numbers.find((num) => num % 2 === 0);
console.log(evenNumber); // Output: 2
    Метод

  1. filter: метод filterиспользуется для создания нового массива, содержащего все элементы, удовлетворяющие заданному условию. Подобно методу find, он также принимает в качестве аргумента функцию обратного вызова. Функция обратного вызова выполняется для каждого элемента, и если условие истинно, элемент включается в новый массив. Если условие ложно, элемент пропускается.

Пример:

const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter((num) => num % 2 === 0);
console.log(evenNumbers); // Output: [2, 4]

Разница между findи filter:

  • findвозвращает первый совпадающий элемент (или undefined, если совпадение не найдено), а filterвозвращает новый массив, содержащий все соответствующие элементы.
  • findпрекращает обход массива после обнаружения совпадения, тогда как filterперебирает все элементы независимо от совпадений.