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

  1. 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.
  2. 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].
  3. currentIndex – La indekso de la aktuala elemento.
  4. 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
---