Метод filter

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

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

Синтаксис

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

Пример

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

javascriptlet 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);

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

javascript[5, 1, 1, 3, 4]

Пример

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

javascriptlet 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);

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

javascript[5, 1, 1, 3, 4]

Пример

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

javascriptlet arr = [-2, 5, 1, -5, -1, 1, 3, 4, -1];

let res = arr.filter(elem => {
  return elem >= 0;
});

console.log(res);

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

javascript[5, 1, 1, 3, 4]

Пример

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

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

console.log(res);

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

javascript[5, 1, 1, 3, 4]

Пример

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

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

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

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