Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Underscore.js
19
Rysunek4.Wynikdziałaniafunkcjimap
Jakwidaćnarysunku4,tymrazemotrzymanywyniktojużniepojedyncze
wpisy,takjakwprzypadkufunkcjieach,alekolekcjazmapowanychelementów.
_.reduce(list,iterator,memo)
Funkcjareducejestużywanadozredukowaniawszystkichelementówwejścio-
wychdojednejwartościwyjściowej.Przykłademtakiegodziałaniamożebyć
dodawanielubmnożenieprzezsiebiewszystkichelementówzkolekcji.Mogłoby
sięwydawać,żetakisamrezultatdałobysięosiągnąć,piszącbardzoprostąpętlę.
Tak,tylkożediabełtkwiwszczegółach.Szczegółemtymjestelementmemo.Jestto
obiektprzechowującypoprzedniewykonaniefunkcji.Otrzymujemydziękitemu
dwaefekty.Popierwsze,mamydostępdowartościzpoprzedniejiteracji.Niejest
tooczywiścieprzydatnezawsze,niemniejjednakbywająsytuacje,wktórychjest
namtopotrzebne.Podrugie,dziękizabiegomwimplementacjifunkcjireduce
wszelkieoperacjewewnątrzniejwykonująsiębezniepotrzebnychopóźnień,co
jestbardzoważnąkwestią,gdyżkodjestwówczasnapisanywsposóboptymalny.
Ijesttowłaśniedoskonałyprzykładnapokazaniejednegozgłównychcelówoma-
wianejbiblioteki,czylisprawienia,żebędziemypisaćlepszykod.
Naszprzykładowykodbędzierealizowałsumowaniewszystkichelementów
znajdującychsięwtablicy.Nakonsolizobaczymyzarównowartośćpokażdejite-
racjisumowania,jakiostatecznywynik.
Listing5.Użyciefunkcjireduce
varsumValues=[1,2,3,4,5,6];
varsumFunction=function(memo,number){
if(memo){
console.log(‘Adding+memo+and+number);
}
returnmemo+number;
};
console.log(_.reduce(sumValues,sumFunction));