Javascript masīva samazināšana ()

JavaScript masīva samazināšanas () metode izpilda reduktora funkciju katram masīva elementam un atgriež vienu izejas vērtību.

Metodes sintakse reduce()ir šāda:

 arr.reduce(callback(accumulator, currentValue), initialValue)

Lūk, arr ir masīvs.

samazināt () parametrus

reduce()Metode ņem in:

  • atzvanīšana - funkcija, kas jāizpilda katram masīva elementam (izņemot pirmo elementu, ja sākotnējā vērtība nav norādīta). Tas aizņem
    • akumulators - tas uzkrāj atzvanīšanas atgriešanās vērtības.
    • currentValue - pašreizējais elements, kas tiek nodots no masīva.
  • sākotnējā vērtība (pēc izvēles) - vērtība, kas tiks pārsūtīta callback()uz pirmo zvanu. Ja tas nav norādīts, pirmais elements darbojas kā akumulators pirmajā zvanā un callback()to neizpilda.

Piezīme. Izsaucot reduce()tukšu masīvu bez sākotnējās vērtības, tiks izmesti TypeError.

Atgriezeniskā vērtība no samazināšanas ()

  • Atgriež vienoto vērtību, kas iegūta pēc masīva samazināšanas.

Piezīmes :

  • reduce() izpilda doto funkciju katrai vērtībai no kreisās uz labo.
  • reduce() nemaina sākotnējo masīvu.
  • Gandrīz vienmēr ir drošāk to nodrošināt initialValue.

1. piemērs: visu masīva vērtību summa

 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

Rezultāts

 21 21

2. piemērs: skaitļu atņemšana masīvā

 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

Rezultāts

 1330 2700

Šis piemērs skaidri izskaidro atšķirību starp sākotnējās vērtības un sākotnējās vērtības nenokļūšanu.

3. piemērs: Noņemiet dublikātus vienumus no masīva

 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 )

Rezultāts

 (18, 21, 1, 51, 5, 7, 10)

4. piemērs: Objektu grupēšana pēc rekvizīta

 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);

Rezultāts

 (“19”: ((vārds: “Dwight”, vecums: 19)), “21”: ((vārds: “Jānis”, vecums: 21), (vārds: “Oskars”, vecums: 21)), ” 55 ': ((vārds:' Olivers ', vecums: 55), (vārds:' Maikls ', vecums: 55), (vārds:' Kevins ', vecums: 55)))

Ieteicams lasīt: JavaScript masīvs reducRight ()

Interesanti raksti...