Javascript Array reducera ()

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 och callback()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 ()

Intressanta artiklar...