Давайте теперь изучим очень полезный метод
filter
, позволяющий отфильтровать
элементы массива. Подобно уже изученным нами
методам, этот метод в параметре получает
функцию-коллбэк (с такими же параметрами,
как и методы map
и forEach
),
которая выполнится для каждого элемента массива.
Своим результатом filter
возвращает
новый массив, в который войдут только те
элементы, для которых коллбэк вернет true
.
Посмотрим работу функции на примере. Пусть у нас дан массив с числами:
let arr = [1, 2, 3, 4, 5];
Давайте отфильтруем массив, оставив в нем только четные числа:
let arr = [1, 2, 3, 4, 5];
let result = arr.filter(function(elem) {
if (elem % 2 == 0) {
return true;
} else {
return false;
}
});
console.log(result); // выведет [2, 4]
Упростим код, используя логические операторы:
let arr = [1, 2, 3, 4, 5];
let result = arr.filter(function(elem) {
return elem % 2 == 0;
});
console.log(result); // выведет [2, 4]
Еще больше упростим код, используя стрелочные функции:
let arr = [1, 2, 3, 4, 5];
let result = arr.filter(elem => elem % 2 == 0);
console.log(result); // выведет [2, 4]
Это решение настолько короткое, что его можно
разместить в параметре console.log
:
let arr = [1, 2, 3, 4, 5];
console.log( arr.filter(elem => elem % 2 == 0) );
Дан массив с числами. Оставьте в нем только положительные числа.
Дан массив с числами. Оставьте в нем только отрицательные числа.
Дан массив с числами. Оставьте в нем только
числа, которые больше нуля, но меньше 10
.
Дан массив со строками. Оставьте в нем только
те строки, длина которых больше 5
-ти
символов.
Дан массив с числами. Оставьте в нем только
те числа, произведение которых на их порядковый
номер меньше 30
.
Дан массив, в нем могут быть обычные элементы
и подмассивы, например [1, 2
, [3,
4], 5
, [6, 7]]. Оставьте в нем только
обычные элементы.
Еще применение
Пусть у нас опять есть наш массив:
let arr = [1, 2, 3, 4, 5];
Давайте подсчитаем количество четных элементов в нем:
let arr = [1, 2, 3, 4, 5];
let filtered = arr.filter(elem => elem % 2 == 0);
console.log( filtered.length ); // выведет 2
Перепишем еще проще:
let arr = [1, 2, 3, 4, 5];
console.log( arr.filter(elem => elem % 2 == 0).length );
Дан массив с числами. Посчитайте количество отрицательных чисел в этом массиве.