Metodų dekonstrukcija yra naudingas pratimas norint įgauti gilesnį supratimą apie programavimo kalbą. Šiame straipsnyje analizuosime,
kas slypi po .filter()
metodo JavaScript kalboje.
.filter()
yra taikomas masyvams (array), ir paprastai tariant, jis ima kiekvieną masyvo elementą ir
vykdo nurodytą funckiją, o rezultatą grąžina į naują masyvą. Tai padeda išvengti FOR ciklo (loop) bei IF sąlygos sakinio. Pirmiausia, pradėkime nuo
šių ir išfiltruokime masyvą išplėstiniu būdu.
# 1. sukuriame masyvą, kuriuo norime manipuliuoti
# 2. konstatuojame tuščią masyvą, į kurį sudėsime išfiltruotus elementus
var myArray = [0, 0, 1, 0, 1, 0];
var newArray = [];
# 1. užvedame FOR ciklą, kuris nustatytas kartoti tiek kartų, kiek yra masyve elementų
# 2. su IF sąlygos sakiniu atsirenkame, kurių elementų mums reikia. Šiuo atveju, mes norime vienetų.
# 3. su .push metodu sudedame vienetus į tuščią masyvą
function filterArray(element) {
for (var i = 0; i < myArray.length; i++) {
if (element[i] === 1) {
newArray.push(element[i]);
}
} return newArray;
}
filterArray(myArray); # mūsų gautas rezultatas - [1, 1]
Kodo ilgis - 8 eilutės. Dabar pažiūrėkime, kaip .filter()
metodas sutrumpina šį kodą.
# nustatome funkciją, kuri tikrina, ar elementas atitinka kriterijų, t.y. ar dėti į naują masyvą.
function myFilter(element) {
return element === 1;
}
# nurodome, kokiam masyvui pritaikyti mūsų filterWithFilter funkciją
myArray.filter(myFilter) // rezultatas - [1, 1]
Matote, kodas viso labo trijų eilučių ilgio (eilučių skaičius priklauso ir nuo rašymo stilius. Man patinka labiau išplėstas, nes jį lengviau skaityti).
Dėl jo trumpumo sumažėja kodo įvedimo klaidų tikimybė.
filter()
metodą galima rašyti ir su anonimine funkcija. Tuomet viskas atrodytų taip:
myArray.filter(function(element) {
return element === 1;
});
Tai štaip veikia .filter()
metodas.
Turi klausimų ar idėjų? Rašyk komentaruose!