Metoden JavaScript Array reducera () kör en reduceringsfunktion på varje element i matrisen och returnerar ett enda utdatavärde.
Syntaxen för reduce()
metoden är:
arr.reduce(callback(accumulator, currentValue), initialValue)
Här är arr en matris.
reducera () parametrar
Den reduce()
metod tar in:
- callback - Funktionen som ska köras på varje arrayelement (förutom det första elementet om ingen initialVärde tillhandahålls). Det tar in
- ackumulator - Det ackumulerar återuppringningsvärdena.
- currentValue - Det aktuella elementet som skickas från matrisen.
- initialValue (valfritt) - Ett värde som skickas till
callback()
vid första samtalet. Om det inte tillhandahålls fungerar det första elementet som ackumulator vid det första samtalet ochcallback()
körs inte på det.
Obs! Att anropa reduce()
en tom array utan initialValue kommer att kasta TypeError
.
Returvärde från reducera ()
- Returnerar det enskilda värdet som resulterar efter att ha minskat matrisen.
Anmärkningar :
reduce()
kör den givna funktionen för varje värde från vänster till höger.reduce()
ändrar inte den ursprungliga matrisen.- Det är nästan alltid säkrare att tillhandahålla
initialValue
.
Exempel 1: Summan av alla värden i matrisen
const numbers = (1, 2, 3, 4, 5, 6); function sum_reducer(accumulator, currentValue) ( return accumulator + currentValue; ) let sum = numbers.reduce(sum_reducer); console.log(sum); // 21 // using arrow function let summation = numbers.reduce( (accumulator, currentValue) => accumulator + currentValue ); console.log(summation); // 21
Produktion
21 21
Exempel 2: Subtrahera siffror i matris
const numbers = (1800, 50, 300, 20, 100); // subtract all numbers from first number // since 1st element is called as accumulator rather than currentValue // 1800 - 50 - 300 - 20 - 100 let difference = numbers.reduce( (accumulator, currentValue) => accumulator - currentValue ); console.log(difference); // 1330 const expenses = (1800, 2000, 3000, 5000, 500); const salary = 15000; // function that subtracts all array elements from given number // 15000 - 1800 - 2000 - 3000 - 5000 - 500 let remaining = expenses.reduce( (accumulator, currentValue) => accumulator - currentValue, salary ); console.log(remaining); // 2700
Produktion
1330 2700
Detta exempel förklarar tydligt skillnaden mellan att skicka en initialvärde och att inte skicka en initialvärde.
Exempel 3: Ta bort dubbletter från Array
let ageGroup = (18, 21, 1, 1, 51, 18, 21, 5, 18, 7, 10); let uniqueAgeGroup = ageGroup.reduce(function (accumulator, currentValue) ( if (accumulator.indexOf(currentValue) === -1) ( accumulator.push(currentValue); ) return accumulator; ), ()); console.log(uniqueAgeGroup); // ( 18, 21, 1, 51, 5, 7, 10 )
Produktion
(18, 21, 1, 51, 5, 7, 10)
Exempel 4: Gruppera objekt efter en fastighet
let people = ( ( name: "John", age: 21 ), ( name: "Oliver", age: 55 ), ( name: "Michael", age: 55 ), ( name: "Dwight", age: 19 ), ( name: "Oscar", age: 21 ), ( name: "Kevin", age: 55 ), ); function groupBy(objectArray, property) ( return objectArray.reduce(function (accumulator, currentObject) ( let key = currentObject(property); if (!accumulator(key)) ( accumulator(key) = (); ) accumulator(key).push(currentObject); return accumulator; ), ()); ) let groupedPeople = groupBy(people, "age"); console.log(groupedPeople);
Produktion
('19': ((namn: 'Dwight', ålder: 19)), '21': ((namn: 'John', ålder: 21), (namn: 'Oscar', ålder: 21)), ' 55 ': ((namn:' Oliver ', ålder: 55), (namn:' Michael ', ålder: 55), (namn:' Kevin ', ålder: 55)))
Rekommenderad läsning: JavaScript Array reduceRight ()