Метод filter - фильтрация элементов массива на JavaScript
Метод 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
});