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ā uncallback()
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 ()