JavaScript arrays : Komprenante la redukti funkcio
sintakso
arr.reduce(callbackFunction, [initialValue])
Kion redukti fari?
Redukti estas funkcio kiu masxojn tra tabelo.
Operacioj eblas realigitaj sur la tabelo per callback funkcio.
Fine de la operacioj en la tabelo, redukti revenas sola valoro
Redukti povas esti uzata, ekzemple, al plena de komerca veturilo
ekzemplo
lasu arr = [1,2,3,4,5];
arr.reduce( (akumulatoro, currentValue, currentIndex, tabelo) => {
//iuj operacioj;
redoni ion;
});
La Callback Funkcio
La callback funkcio alpreĝas por ĉiu elemento en la tabelo, pasante en 4 argumentoj kiuj pasis en la redukti funkcio.
Tiuj 4 argumentoj tiam povas esti uzata en nia callback funkcio.
Prenas kvar argumentojn
- akumulatoro – La unua elemento de la tabelo en la unua iteracio aŭ komencan valoron se havigis. Tiam la reiris valoro de la antaŭa ciklo.
- currentValue – La aktuala ero en la tabelo. Komenciĝas de la dua elemento en la tabelo te. arr[1], kiam la komenca valoro argumento ne pasis. Se la komenca valoro argumento pasis tiam aktuala valoro startas de la 1-a elemento en la tabelo arr[0].
- currentIndex – La indekso de la aktuala elemento.
- tabelo – La tuta tabelo.
Laborante Ekzemplo
lasu arr = [1,2,3,4,5]; arr.reduce( (akumulatoro, currentValue, currentIndex, tabelo) => { console.log(`akumulatoro (La 1-a iteracio, akumulatoro estas arr[0], tiam ĝi estas la reiris valoro de la antaŭa ciklo): ${akumulatoro}`); console.log(`currentValue (Loops tra la tabelo, komencante ĉe arr[1]): ${currentValue}`); console.log(`currentIndex: ${currentIndex}`); console.log(`tabelo: ${tabelo}`); console.log('---'); reveno akumulatoro + currentValue; } );
eligo
akumulatoro (La 1-a iteracio, akumulatoro estas arr[0], tiam ĝi estas la reiris valoro de la antaŭa ciklo): 1 currentValue (Loops tra la tabelo, komencante ĉe arr[1]): 2 currentIndex: 1 tabelo: 1,2,3,4,5 --- akumulatoro (La 1-a iteracio, akumulatoro estas arr[0], tiam ĝi estas la reiris valoro de la antaŭa ciklo): 3 currentValue (Loops tra la tabelo, komencante ĉe arr[1]): 3 currentIndex: 2 tabelo: 1,2,3,4,5 --- akumulatoro (La 1-a iteracio, akumulatoro estas arr[0], tiam ĝi estas la reiris valoro de la antaŭa ciklo): 6 currentValue (Loops tra la tabelo, komencante ĉe arr[1]): 4 currentIndex: 3 tabelo: 1,2,3,4,5 --- akumulatoro (La 1-a iteracio, akumulatoro estas arr[0], tiam ĝi estas la reiris valoro de la antaŭa ciklo): 10 currentValue (Loops tra la tabelo, komencante ĉe arr[1]): 5 currentIndex: 4 tabelo: 1,2,3,4,5 ---
Provizante la komenca valoro
Specifante la duan parametron (initialValue) en la redukti funkcion kaŭzos initialValue esti pasis en kiel la akumulatoro argumento sur la unua iteracio.
Notu ke la aktuala valoro de la 1-a buklo nun komenciĝas ĉe la unua elemento de la tabelo
Laborante Ekzemplo
lasu arr = [1,2,3,4,5]; arr.reduce( (akumulatoro, currentValue, currentIndex, tabelo) => { console.log(`akumulatoro ( En la 1-a iteracio, ĉi tiu estas la komenca valoro, tiam la reiris valoro de la antaŭa ciklo): ${akumulatoro}`); console.log(`currentValue (Loops tra la tabelo, komencante ĉe arr[0]): ${currentValue}`); console.log(`currentIndex: ${currentIndex}`); console.log(`tabelo: ${tabelo}`); console.log('---'); reveno akumulatoro + currentValue; }, 0 );
eligo
akumulatoro ( En la 1-a iteracio, ĉi tiu estas la komenca valoro, tiam la reiris valoro de la antaŭa ciklo): 0 currentValue (Loops tra la tabelo, komencante ĉe arr[0]): 1 currentIndex: 0 tabelo: 1,2,3,4,5 --- akumulatoro ( En la 1-a iteracio, ĉi tiu estas la komenca valoro, tiam la reiris valoro de la antaŭa ciklo): 1 currentValue (Loops tra la tabelo, komencante ĉe arr[0]): 2 currentIndex: 1 tabelo: 1,2,3,4,5 --- akumulatoro ( En la 1-a iteracio, ĉi tiu estas la komenca valoro, tiam la reiris valoro de la antaŭa ciklo): 3 currentValue (Loops tra la tabelo, komencante ĉe arr[0]): 3 currentIndex: 2 tabelo: 1,2,3,4,5 --- akumulatoro ( En la 1-a iteracio, ĉi tiu estas la komenca valoro, tiam la reiris valoro de la antaŭa ciklo): 6 currentValue (Loops tra la tabelo, komencante ĉe arr[0]): 4 currentIndex: 3 tabelo: 1,2,3,4,5 --- akumulatoro ( En la 1-a iteracio, ĉi tiu estas la komenca valoro, tiam la reiris valoro de la antaŭa ciklo): 10 currentValue (Loops tra la tabelo, komencante ĉe arr[0]): 5 currentIndex: 4 tabelo: 1,2,3,4,5 ---
