JavaScript Arrays : Forstå reducere funktionen
Syntaks
arr.reduce(callbackFunction, [initialValue])
Hvad betyder reducere gøre?
Reducer er en funktion, sløjfer gennem et array.
Handlinger kan udføres på arrayet via en tilbagekaldsfunktion.
Ved afslutningen af de operationer på array, reducere returnerer en enkelt værdi
Reducer kan bruges, for eksempel, i alt en indkøbskurv
Eksempel
Lad arr = [1,2,3,4,5];
arr.reduce( (akkumulator, nuværende værdi, currentIndex, matrix) => {
//nogle operationer;
returnere noget;
});
Funktionen tilbagekald
Tilbagekaldsfunktionen kaldes for hvert element i arrayet, passerer i 4 argumenter, der sendes videre af reduceringsfunktionen.
Disse 4 argumenter så kan bruges i vores callback funktion.
Tager fire argumenter
- akkumulator – Det første element i arrayet på den første sløjfe eller startværdi hvis leveret. Så den returnerede værdi af den foregående løkke.
- nuværende værdi – Det aktuelle element i arrayet. Starter fra det andet element i array dvs.. arr[1], når den oprindelige værdi argumentet ikke er bestået. Hvis den oprindelige værdi argument gået så aktuel værdi starter fra den 1. element i array arr[0].
- currentIndex – Indekset for det aktuelle element.
- matrix – Hele arrayet.
Udførelseseksempel
Lad arr = [1,2,3,4,5]; arr.reduce( (akkumulator, nuværende værdi, currentIndex, matrix) => { console.log(`akkumulator (På 1. løkke, akkumulator er arr[0], så er den returnerede værdi af den foregående løkke): ${akkumulator}`); console.log(`CurrentValue (Sløjfer gennem opstillingen, begyndende ved arr[1]): ${nuværende værdi}`); console.log(`currentIndex: ${currentIndex}`); console.log(`matrix: ${matrix}`); console.log('---'); tilbageløbsakkumulatoren + nuværende værdi; } );
Produktion
akkumulator (På 1. løkke, akkumulator er arr[0], så er den returnerede værdi af den foregående løkke): 1 nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[1]): 2 currentIndex: 1 matrix: 1,2,3,4,5 --- akkumulator (På 1. løkke, akkumulator er arr[0], så er den returnerede værdi af den foregående løkke): 3 nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[1]): 3 currentIndex: 2 matrix: 1,2,3,4,5 --- akkumulator (På 1. løkke, akkumulator er arr[0], så er den returnerede værdi af den foregående løkke): 6 nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[1]): 4 currentIndex: 3 matrix: 1,2,3,4,5 --- akkumulator (På 1. løkke, akkumulator er arr[0], så er den returnerede værdi af den foregående løkke): 10 nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[1]): 5 currentIndex: 4 matrix: 1,2,3,4,5 ---
Giver den oprindelige værdi
Angivelse den anden parameter (startværdi) i reducere funktionen vil forårsage initialValue at være bestået, som akkumulatoren argument på den første sløjfe.
Bemærk, at den aktuelle værdi på 1. løkke nu starter ved det første element af array
Udførelseseksempel
Lad arr = [1,2,3,4,5]; arr.reduce( (akkumulator, nuværende værdi, currentIndex, matrix) => { console.log(`akkumulator ( På 1. løkke, dette er den oprindelige værdi, derefter den returnerede værdi af den foregående løkke): ${akkumulator}`); console.log(`CurrentValue (Sløjfer gennem opstillingen, begyndende ved arr[0]): ${nuværende værdi}`); console.log(`currentIndex: ${currentIndex}`); console.log(`matrix: ${matrix}`); console.log('---'); tilbageløbsakkumulatoren + nuværende værdi; }, 0 );
Produktion
akkumulator ( På 1. løkke, dette er den oprindelige værdi, derefter den returnerede værdi af den foregående løkke): 0 nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[0]): 1 currentIndex: 0 matrix: 1,2,3,4,5 --- akkumulator ( På 1. løkke, dette er den oprindelige værdi, derefter den returnerede værdi af den foregående løkke): 1 nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[0]): 2 currentIndex: 1 matrix: 1,2,3,4,5 --- akkumulator ( På 1. løkke, dette er den oprindelige værdi, derefter den returnerede værdi af den foregående løkke): 3 nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[0]): 3 currentIndex: 2 matrix: 1,2,3,4,5 --- akkumulator ( På 1. løkke, dette er den oprindelige værdi, derefter den returnerede værdi af den foregående løkke): 6 nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[0]): 4 currentIndex: 3 matrix: 1,2,3,4,5 --- akkumulator ( På 1. løkke, dette er den oprindelige værdi, derefter den returnerede værdi af den foregående løkke): 10 nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[0]): 5 currentIndex: 4 matrix: 1,2,3,4,5 ---
