Фильтр Он делает именно то, на что похож. Он принимает массив и отфильтровывает нежелательные элементы.

Метод filter() возвращает новый массив со всеми элементами, прошедшими проверку, определенную данной функцией.

фильтр() Синтаксис

let newArray = arr.filter(callback(currentValue , index , [array]) {
  // return element for newArray, if true
});

Точно так же, как map, filter передает вашему обратному вызову три аргумента:

  1. Текущий элемент
  2. Текущий индекс
  3. Необязательный массив

Выполнение

Рассмотрим следующий пример, в котором отфильтровывается любая строка длиной менее 8 символов.

const words = ['Python', 'Javascript', 'Go', 'Java', 'PHP', 'Ruby'];
const result = words.filter(word => word.length < 8);
console.log(result);

Ожидаемый результат будет следующим: [ ‘Python’, ‘Go’, ‘Java’, ‘PHP’, ‘Ruby’]

const tasks = [
  {
    'name'     : 'Write for Envato Tuts+',
    'duration' : 120
  },
  {
    'name'     : 'Work out',
    'duration' : 60
  },
  {
    'name'     : 'Procrastinate on Duolingo',
    'duration' : 240
  }
];

скажем, я хочу получить список только задач, на выполнение которых у меня ушло два часа или больше.

С filter мы можем просто написать:

const difficultTask = tasks.filter((task) => task.duration >= 120 );
console.log(difficult_tasks)
// Result
[
    { name: 'Write for Envato Tuts+', duration: 120 },
    { name: 'Procrastinate on Duolingo', duration: 240}
]

Найти четное число из массива с помощью arr.filter()

let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// function to check even numbers
function checkEven(number) {
  if (number % 2 == 0)
    return true;
  else
    return false;
}
// create a new array by filter even numbers from the numbers array
let evenNumbers = numbers.filter(checkEven);
console.log(evenNumbers);
// Output: [ 2, 4, 6, 8, 10 ]

фильтр() Возвращаемое значение

  • Возвращает новый массив только с элементами, прошедшими проверку.
  • filter() не изменяет исходный массив.

Спасибо !!!
Предложения всегда приветствуются!
Не стесняйтесь комментировать любые предложения/исправления или пишите мне на [email protected]