filter()
Используется для фильтрации массива через функцию. Он создаёт новый массив, в который войдут только те элементы arr, для которых вызов callback(item, i, arr)
возвратит true
;
Метод filter()
возвращает массив, содержащий подмножество элементов исходного массива. Передаваемая ему функция должна быть функцией-предикатом, т. е. должна возвращать значение true
или false
.
Метод filter()
вызывает функцию точно так же, как методы forEach()
и map()
. Если возвращается true
или значение, которое может быть преобразовано в true
, переданный функции элемент считается членом подмножества и добавляется в массив, возвращаемый методом. Например:
a = [5, 4, 3, 2, 1];
smallvalues = a.filter(function(x) { return x < 3 }); // [2, 1]
everyother = a.filter(function(x,i) { return i % 2==0 }); // [5, 3, 1]
______________
Обратите внимание, что метод filter()
пропускает отсутствующие элементы в разреженных массивах и всегда возвращает плотные массивы. Чтобы уплотнить разреженный массив, можно выполнить следующие действия:
var dense = sparse.filter(function() { return true; });
А чтобы уплотнить массив и удалить из него все элементы со значениями undefined
и null
, можно использовать метод filter()
, как показано ниже:
a = a.filter(function(x) { return x !== undefined && x != null; });