# Метод filter

Метод `filter` позволяется отфильтровать элементы массива, оставив только подходящие под определенное условие элементы. Метод в параметре получает функцию, которая выполнится для каждого элемента массива. Своим результатом метод возвращает новый массив, в который войдут только те элементы, для которых переданная функции вернет `true`.

В функцию можно передавать три параметра. Если эти параметры есть (они не обязательны), то в первый автоматически попадет элемент массива, во второй попадет его номер в массиве (индекс), а в третий - сам массив.

## Синтаксис

`let новый массив = массив.filter(function(элемент, индекс, массив) { код return true или false });`

## Пример

Давайте отфильтруем массив, оставив в нем только положительные числа:

`let arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1]; let res = arr.filter(function(elem) { if (elem >= 0) { return true; } else { return false; } }); console.log(res);`

Результат выполнения кода:

`[5, 1, 1, 3, 4]`

## Пример

Сократим код, воспользовавшись стрелочной функцией:

`let arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1]; let res = arr.filter(elem => { if (elem >= 0) { return true; } else { return false; } }); console.log(res);`

Результат выполнения кода:

`[5, 1, 1, 3, 4]`

## Пример

Сократим код, воспользовавшись сокращением логических операций:

`let arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1]; let res = arr.filter(elem => { return elem >= 0; }); console.log(res);`

Результат выполнения кода:

`[5, 1, 1, 3, 4]`

## Пример

Сократим код, воспользовавшись особенностями стрелочных функций:

`let arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1]; let res = arr.filter(elem => elem > 0); console.log(res);`

Результат выполнения кода:

`[5, 1, 1, 3, 4]`

## Пример

При необходимости в третий параметр можно передать сам массив:

`let res = arr.filter(function(elem, index, arr) { тут будет доступен массив arr });`

## Смотрите также

- методы `map` и `forEach`,
  которые позволяют применить функцию к каждому элементу массива
- методы `some` и `every`,
  выполняющие проверку массива
- методы `reduce` и `reduceRight`,
  сворачивающие массив к одному значению

← →
↑
en ru