Tworzy nową tablicę z wszystkimi elementami, które przechodzą poprawnie zrealizowany w postaci dostarczonej funkcji test.
Składnia
arr.filter(callback[, thisArg])
Parametry
callback
- Funkcja sprawdzająca każdy element tablicy.
thisArg
- Obiekt na który będzie wskazywał
this
, gdy wykonana zostanie funkcja zwrotnacallback
.
Opis
Metoda filter
wykonuje dostarczoną funkcję callback
dla każdego elementu tablicy tworząc nową tablicę z wszystkich tych elementów, dla których funkcja callback
zwróciła wartość true
. Wynikowa tablica jest zwarta; wartości które nie przechodzą testu funkcji callback
są zwyczajnie pomijane i nie są przypisywane do indeksów nowej tablicy.
Funkcja callback
jest wywoływana z trzema argumentami: wartością elementu, jego indeksem i obiektem tablicy, w którym się ten element zawiera.
Jeśli parametr thisObject
został dostarczony do metody filter
, będzie on wskazywany przez this
dla każdego wywołania funkcjicallback
. W przypadku, gdy nie został on przekazany lub jego wartość jest równa null
, this
będzie się odnosić do obiektu globalnego połączonego z funkcją callback
.
Metoda filter
nie modyfikuje tablicy, na której jest wywoływana.
Zakres elementów przetwarzanych przez filter
jest ustawiany przed pierwszym wywołaniem funkcji callback
. Elementy dołączone do tablicy po momencie wywołania filter
są testowane przez callback
. Jeśli istniejące elementy tablicy są zmieniane lub usuwane, to wartość przesyłana do funkcji callback
odpowiada wartości w momencie, w którym filter
się o nie zwróci; metoda filter
nie upomina się o elementy usunięte.
Kompatybilność
filter
jest rozszerzeniem JavaScript dla standardu ECMA-262, więc może nie być obecny w innych implementacjach tego standardu. Można to obejść, dopisując poniższy kod na początku skryptu, zezwalający na użycie filter
w implementacji ECMA-262, które nie wspierają tego natywnie.
if (!Array.prototype.filter) { Array.prototype.filter = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "function") throw new TypeError(); var res = new Array(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this) { var val = this[i]; // in case fun mutates this if (fun.call(thisp, val, i, this)) res.push(val); } } return res; }; }
Przykłady
Przykład: Odfiltrowanie wszystkich małych wartości
Poniższy przykład używa filter
by utworzyć przefiltrowaną tablicę, z której usunięto wszystkie elementy których wartość wynosi mniej niż 10.
function isBigEnough(element, index, array) { return (element >= 10); } filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
Kompatybilność z przeglądarkami
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | 1.5 (1.8) | 9 | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | 1.0 (1.8) | (Yes) | (Yes) | (Yes) |