Cara menggunakan latihan pengurangan javascript

Contoh

Kurangi semua angka dalam array

angka const = [175, 50, 25];

dokumen. getElementById("demo"). innerHTML = angka. kurangi(myFunc);

function myFunc(total, num) {
mengembalikan total - num;
}

Cobalah sendiri "

Bulatkan semua angka dan tampilkan jumlahnya

angka const = [15. 5, 2. 3, 1. 1, 4. 7];
dokumen. getElementById("demo"). innerHTML = angka. kurangi(getSum, 0);

fungsi getSum(total, num) {
mengembalikan total + Matematika. bulat(bil);
}

Cobalah sendiri "

Definisi dan Penggunaan

Metode reduce() mengeksekusi fungsi peredam untuk elemen array

Metode reduce() mengembalikan nilai tunggal. hasil akumulasi fungsi

Metode reduce() tidak menjalankan fungsi untuk elemen array kosong

Metode reduce() tidak mengubah array asli

Catatan

Pada callback pertama, tidak ada nilai kembalian dari callback sebelumnya

Biasanya, elemen array 0 digunakan sebagai nilai awal, dan iterasi dimulai dari elemen array 1

Jika nilai awal diberikan, ini digunakan, dan iterasi dimulai dari elemen array 0

Lihat juga

Metode Array reduceRight()

Sintaksis

Himpunan. kurangi (fungsi (total, Nilai saat ini, Indeks saat ini, arr), nilai awal)

Parameter

ParameterDescriptionfunction()Diperlukan
Fungsi yang akan dijalankan untuk setiap elemen dalam larik. Parameter fungsi peredam. totalDiperlukan
initialValue, atau nilai fungsi yang dikembalikan sebelumnya. CurrentValueRequired
Nilai elemen saat ini. CurrentIndexOptional
Indeks elemen saat ini. arrOptional
Array milik elemen saat ini. initialValueOptional
Nilai yang akan diteruskan ke fungsi sebagai nilai awal

Nilai Pengembalian

Hasil akumulasi dari panggilan terakhir fungsi callback

Dukungan Peramban

reduce()_ adalah fitur ECMAScript5 (ES5).

ES5 (JavaScript 2009) didukung penuh di semua browser

ChromeEdgeFirefoxSafariOperaIEYaYaYaYa9-11

Metode const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5 mengeksekusi fungsi callback "reducer" yang disediakan pengguna pada setiap elemen array, secara berurutan, meneruskan nilai kembalian dari perhitungan pada elemen sebelumnya. Hasil akhir menjalankan peredam di semua elemen array adalah satu nilai

Pertama kali callback dijalankan tidak ada "nilai kembalian dari perhitungan sebelumnya". Jika disediakan, nilai awal dapat digunakan sebagai gantinya. Jika tidak, elemen array pada indeks 0 digunakan sebagai nilai awal dan iterasi dimulai dari elemen berikutnya (indeks 1 bukan indeks 0)

Mungkin kasus yang paling mudah dipahami untuk const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5 adalah mengembalikan jumlah semua elemen dalam array

Peredam berjalan melalui elemen-demi-elemen array, pada setiap langkah menambahkan nilai array saat ini ke hasil dari langkah sebelumnya (hasil ini adalah jumlah berjalan dari semua langkah sebelumnya) — sampai tidak ada lagi elemen untuk ditambahkan

// Arrow function reduce((accumulator, currentValue) => { /* … */ }) reduce((accumulator, currentValue, currentIndex) => { /* … */ }) reduce((accumulator, currentValue, currentIndex, array) => { /* … */ }) reduce((accumulator, currentValue) => { /* … */ }, initialValue) reduce((accumulator, currentValue, currentIndex) => { /* … */ }, initialValue) reduce((accumulator, currentValue, currentIndex, array) => { /* … */ }, initialValue) // Callback function reduce(callbackFn) reduce(callbackFn, initialValue) // Inline callback function reduce(function (accumulator, currentValue) { /* … */ }) reduce(function (accumulator, currentValue, currentIndex) { /* … */ }) reduce(function (accumulator, currentValue, currentIndex, array) { /* … */ }) reduce(function (accumulator, currentValue) { /* … */ }, initialValue) reduce(function (accumulator, currentValue, currentIndex) { /* … */ }, initialValue) reduce(function (accumulator, currentValue, currentIndex, array) { /* … */ }, initialValue)

const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError _7

Fungsi untuk mengeksekusi setiap elemen dalam array. Nilai pengembaliannya menjadi nilai parameter const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 8 pada pemanggilan const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7 berikutnya. Untuk pemanggilan terakhir, nilai yang dikembalikan menjadi nilai yang dikembalikan const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5

Fungsi tersebut dipanggil dengan argumen berikut

const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError _8

Nilai yang dihasilkan dari panggilan sebelumnya ke const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7. Pada panggilan pertama, const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); _3 jika ditentukan, jika tidak, nilai const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); 4

const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); _5

Nilai elemen saat ini. Pada panggilan pertama, nilai const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); _4 jika const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); 3 ditentukan, jika tidak, nilai const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); 8

const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); _9

Posisi indeks const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); _5 dalam larik. Pada panggilan pertama, [15, 16, 17, 18, 19].reduce( (accumulator, currentValue) => accumulator + currentValue, 10, ); 1 jika const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); 3 ditentukan, jika tidak [15, 16, 17, 18, 19].reduce( (accumulator, currentValue) => accumulator + currentValue, 10, ); 3

[15, 16, 17, 18, 19].reduce( (accumulator, currentValue) => accumulator + currentValue, 10, ); _4

Array const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError _5 dipanggil

const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); 3 Opsional

Nilai yang const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError _8 diinisialisasi saat pertama kali callback dipanggil. Jika const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); _3 ditentukan, const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7 mulai mengeksekusi dengan nilai pertama dalam larik sebagai const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); 5. Jika const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); _3 tidak ditentukan, const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 8 diinisialisasi ke nilai pertama dalam larik, dan const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7 mulai mengeksekusi dengan nilai kedua dalam larik sebagai const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); 5. Dalam hal ini, jika array kosong (sehingga tidak ada nilai pertama yang dikembalikan sebagai const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 8), kesalahan akan terjadi

Nilai yang dihasilkan dari menjalankan fungsi panggilan balik "peredam" hingga penyelesaian seluruh larik

const objects = [{ x: 1 }, { x: 2 }, { x: 3 }]; const sum = objects.reduce( (accumulator, currentValue) => accumulator + currentValue.x, 0, ); console.log(sum); // 6 _6

Larik tidak berisi elemen dan const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); _3 tidak disediakan

Metode const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5 adalah sebuah. Ini menjalankan fungsi panggilan balik "peredam" pada semua elemen dalam larik, dalam urutan indeks naik, dan mengakumulasikannya menjadi satu nilai. Setiap kali, nilai pengembalian const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError _7 diteruskan ke const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7 lagi pada pemanggilan berikutnya sebagai const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 8. Nilai akhir dari const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 8 (yang merupakan nilai yang dikembalikan dari const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7 pada iterasi terakhir dari array) menjadi nilai kembalian dari const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5

const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7 dipanggil hanya untuk indeks array yang telah menetapkan nilai. Itu tidak dipanggil untuk slot kosong

Tidak seperti yang lain, const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5 tidak menerima argumen const flattened = [ [0, 1], [2, 3], [4, 5], ].reduce((accumulator, currentValue) => accumulator.concat(currentValue), []); // flattened is [0, 1, 2, 3, 4, 5] 7. const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7 selalu dipanggil dengan const flattened = [ [0, 1], [2, 3], [4, 5], ].reduce((accumulator, currentValue) => accumulator.concat(currentValue), []); // flattened is [0, 1, 2, 3, 4, 5] 9 sebagai const names = ["Alice", "Bob", "Tiff", "Bruce", "Alice"]; const countedNames = names.reduce((allNames, name) => { const currCount = allNames[name] ?? 0; return { ...allNames, [name]: currCount + 1, }; }, {}); // countedNames is: // { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 } 0, yang diganti dengan const names = ["Alice", "Bob", "Tiff", "Bruce", "Alice"]; const countedNames = names.reduce((allNames, name) => { const currCount = allNames[name] ?? 0; return { ...allNames, [name]: currCount + 1, }; }, {}); // countedNames is: // { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 } 1 jika const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7 tidak ketat

const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5 adalah konsep sentral dalam pemrograman fungsional, di mana tidak mungkin mengubah nilai apa pun, jadi untuk mengakumulasi semua nilai dalam array, seseorang harus mengembalikan nilai akumulator baru pada setiap iterasi. Konvensi ini menyebar ke const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5 JavaScript. Anda harus menggunakan metode penyebaran atau penyalinan lainnya jika memungkinkan untuk membuat larik dan objek baru sebagai akumulator, daripada memutasikan yang sudah ada. Jika Anda memutuskan untuk mengubah akumulator alih-alih menyalinnya, ingatlah untuk tetap mengembalikan objek yang dimodifikasi dalam panggilan balik, atau iterasi berikutnya akan menerima undefined

const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5 tidak mengubah array yang dipanggil, tetapi fungsi yang disediakan sebagai const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7 dapat. Perhatikan, bagaimanapun, bahwa panjang array disimpan sebelum pemanggilan pertama dari const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7. Karena itu

  • const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7 tidak akan mengunjungi elemen apa pun yang ditambahkan melebihi panjang awal array saat panggilan ke const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5 dimulai
  • Perubahan pada indeks yang sudah dikunjungi tidak menyebabkan const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7 dipanggil lagi
  • Jika ada elemen array yang belum dikunjungi diubah oleh const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7, nilainya diteruskan ke const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7 akan menjadi nilai pada saat elemen dikunjungi. Elemen yang dihapus tidak dikunjungi

Peringatan. Modifikasi bersamaan dari jenis yang dijelaskan di atas sering menyebabkan kode yang sulit dipahami dan umumnya harus dihindari (kecuali dalam kasus khusus)

Metode const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5 adalah. Itu hanya mengharapkan nilai const names = ["Alice", "Bob", "Tiff", "Bruce", "Alice"]; const countedNames = names.reduce((allNames, name) => { const currCount = allNames[name] ?? 0; return { ...allNames, [name]: currCount + 1, }; }, {}); // countedNames is: // { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 } _0 memiliki properti const people = [ { name: "Alice", age: 21 }, { name: "Max", age: 20 }, { name: "Jane", age: 20 }, ]; function groupBy(objectArray, property) { return objectArray.reduce((acc, obj) => { const key = obj[property]; const curGroup = acc[key] ?? []; return { ...acc, [key]: [...curGroup, obj] }; }, {}); } const groupedPeople = groupBy(people, "age"); console.log(groupedPeople); // { // 20: [ // { name: 'Max', age: 20 }, // { name: 'Jane', age: 20 } // ], // 21: [{ name: 'Alice', age: 21 }] // } 5 dan properti dengan kunci bilangan bulat

Fungsi rekursif seperti const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5 bisa sangat berguna, tetapi terkadang sulit dipahami, terutama bagi pengembang JavaScript yang kurang berpengalaman. Jika kode menjadi lebih jelas saat menggunakan metode larik lainnya, pengembang harus mempertimbangkan tradeoff keterbacaan terhadap manfaat lain menggunakan const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5. Dalam kasus di mana const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5 adalah pilihan terbaik, dokumentasi dan penamaan variabel semantik dapat membantu mengurangi kelemahan keterbacaan

Jika array hanya memiliki satu elemen (terlepas dari posisinya) dan tidak ada const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); 3 yang disediakan, atau jika const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); 3 disediakan tetapi array kosong, nilai tunggal akan dikembalikan tanpa memanggil const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 7

Jika const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); _3 disediakan dan array tidak kosong, maka metode pengurangan akan selalu memanggil fungsi callback mulai dari indeks 0

Jika const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); 3 tidak disediakan maka metode pengurangan akan bertindak berbeda untuk array dengan panjang lebih besar dari 1, sama dengan 1 dan 0, seperti yang ditunjukkan pada contoh berikut

const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError

Kode di bawah menunjukkan apa yang terjadi jika kita memanggil const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5 dengan array dan tanpa nilai awal

const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); _

Panggilan balik akan dipanggil empat kali, dengan argumen dan nilai kembalian di setiap panggilan sebagai berikut

const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 8const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); 5// friends - an array of objects // where object field "books" is a list of favorite books const friends = [ { name: "Anna", books: ["Bible", "Harry Potter"], age: 21, }, { name: "Bob", books: ["War and peace", "Romeo and Juliet"], age: 26, }, { name: "Alice", books: ["The Lord of the Rings", "The Shining"], age: 18, }, ]; // allbooks - list which will contain all friends' books + // additional list contained in initialValue const allbooks = friends.reduce( (accumulator, currentValue) => [...accumulator, ...currentValue.books], ["Alphabet"], ); console.log(allbooks); // [ // 'Alphabet', 'Bible', 'Harry Potter', 'War and peace', // 'Romeo and Juliet', 'The Lord of the Rings', // 'The Shining' // ] 7Return valueFirst call// friends - an array of objects // where object field "books" is a list of favorite books const friends = [ { name: "Anna", books: ["Bible", "Harry Potter"], age: 21, }, { name: "Bob", books: ["War and peace", "Romeo and Juliet"], age: 26, }, { name: "Alice", books: ["The Lord of the Rings", "The Shining"], age: 18, }, ]; // allbooks - list which will contain all friends' books + // additional list contained in initialValue const allbooks = friends.reduce( (accumulator, currentValue) => [...accumulator, ...currentValue.books], ["Alphabet"], ); console.log(allbooks); // [ // 'Alphabet', 'Bible', 'Harry Potter', 'War and peace', // 'Romeo and Juliet', 'The Lord of the Rings', // 'The Shining' // ] 8// friends - an array of objects // where object field "books" is a list of favorite books const friends = [ { name: "Anna", books: ["Bible", "Harry Potter"], age: 21, }, { name: "Bob", books: ["War and peace", "Romeo and Juliet"], age: 26, }, { name: "Alice", books: ["The Lord of the Rings", "The Shining"], age: 18, }, ]; // allbooks - list which will contain all friends' books + // additional list contained in initialValue const allbooks = friends.reduce( (accumulator, currentValue) => [...accumulator, ...currentValue.books], ["Alphabet"], ); console.log(allbooks); // [ // 'Alphabet', 'Bible', 'Harry Potter', 'War and peace', // 'Romeo and Juliet', 'The Lord of the Rings', // 'The Shining' // ] 9[15, 16, 17, 18, 19].reduce( (accumulator, currentValue) => accumulator + currentValue, 10, ); 3const myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates); 1Second callconst myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates); 1const myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates); 3const myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates); 4const myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates); 5Third callconst myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates); 5const myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates); 7const myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates); 8const myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates); 9Fourth callconst myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates); 9const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 01const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 02const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 03

Parameter [15, 16, 17, 18, 19].reduce( (accumulator, currentValue) => accumulator + currentValue, 10, ); _4 tidak pernah berubah selama proses — selalu const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 05. Nilai yang dikembalikan oleh const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError _5 akan menjadi pemanggilan callback terakhir (const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 03)

Di sini kita mengurangi larik yang sama menggunakan algoritme yang sama, tetapi dengan const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); 3 dari const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 09 diteruskan sebagai argumen kedua ke const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5

[15, 16, 17, 18, 19].reduce( (accumulator, currentValue) => accumulator + currentValue, 10, );

Panggilan balik akan dipanggil lima kali, dengan argumen dan nilai kembalian di setiap panggilan sebagai berikut

const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 8const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); 5// friends - an array of objects // where object field "books" is a list of favorite books const friends = [ { name: "Anna", books: ["Bible", "Harry Potter"], age: 21, }, { name: "Bob", books: ["War and peace", "Romeo and Juliet"], age: 26, }, { name: "Alice", books: ["The Lord of the Rings", "The Shining"], age: 18, }, ]; // allbooks - list which will contain all friends' books + // additional list contained in initialValue const allbooks = friends.reduce( (accumulator, currentValue) => [...accumulator, ...currentValue.books], ["Alphabet"], ); console.log(allbooks); // [ // 'Alphabet', 'Bible', 'Harry Potter', 'War and peace', // 'Romeo and Juliet', 'The Lord of the Rings', // 'The Shining' // ] 7Return valueFirst callconst getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 09// friends - an array of objects // where object field "books" is a list of favorite books const friends = [ { name: "Anna", books: ["Bible", "Harry Potter"], age: 21, }, { name: "Bob", books: ["War and peace", "Romeo and Juliet"], age: 26, }, { name: "Alice", books: ["The Lord of the Rings", "The Shining"], age: 18, }, ]; // allbooks - list which will contain all friends' books + // additional list contained in initialValue const allbooks = friends.reduce( (accumulator, currentValue) => [...accumulator, ...currentValue.books], ["Alphabet"], ); console.log(allbooks); // [ // 'Alphabet', 'Bible', 'Harry Potter', 'War and peace', // 'Romeo and Juliet', 'The Lord of the Rings', // 'The Shining' // ] 8[15, 16, 17, 18, 19].reduce( (accumulator, currentValue) => accumulator + currentValue, 10, ); 1const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 17Second callconst getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 17// friends - an array of objects // where object field "books" is a list of favorite books const friends = [ { name: "Anna", books: ["Bible", "Harry Potter"], age: 21, }, { name: "Bob", books: ["War and peace", "Romeo and Juliet"], age: 26, }, { name: "Alice", books: ["The Lord of the Rings", "The Shining"], age: 18, }, ]; // allbooks - list which will contain all friends' books + // additional list contained in initialValue const allbooks = friends.reduce( (accumulator, currentValue) => [...accumulator, ...currentValue.books], ["Alphabet"], ); console.log(allbooks); // [ // 'Alphabet', 'Bible', 'Harry Potter', 'War and peace', // 'Romeo and Juliet', 'The Lord of the Rings', // 'The Shining' // ] 9[15, 16, 17, 18, 19].reduce( (accumulator, currentValue) => accumulator + currentValue, 10, ); 3const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 21Third callconst getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 21const myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates); 3const myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates); 4const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 25Fourth callconst getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 25const myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates); 7const myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates); 8const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 29Fifth callconst getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 29const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 01const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 02const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 33

Nilai yang dikembalikan oleh const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError _5 dalam hal ini adalah const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 33

Untuk meringkas nilai yang terkandung dalam array objek, Anda harus memberikan const array = [15, 16, 17, 18, 19]; function reducer(accumulator, currentValue, index) { const returns = accumulator + currentValue; console.log( `accumulator: ${accumulator}, currentValue: ${currentValue}, index: ${index}, returns: ${returns}`, ); return returns; } array.reduce(reducer); 3, sehingga setiap item melewati fungsi Anda

const objects = [{ x: 1 }, { x: 2 }, { x: 3 }]; const sum = objects.reduce( (accumulator, currentValue) => accumulator + currentValue.x, 0, ); console.log(sum); // 6

const flattened = [ [0, 1], [2, 3], [4, 5], ].reduce((accumulator, currentValue) => accumulator.concat(currentValue), []); // flattened is [0, 1, 2, 3, 4, 5]

const names = ["Alice", "Bob", "Tiff", "Bruce", "Alice"]; const countedNames = names.reduce((allNames, name) => { const currCount = allNames[name] ?? 0; return { ...allNames, [name]: currCount + 1, }; }, {}); // countedNames is: // { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }

const people = [ { name: "Alice", age: 21 }, { name: "Max", age: 20 }, { name: "Jane", age: 20 }, ]; function groupBy(objectArray, property) { return objectArray.reduce((acc, obj) => { const key = obj[property]; const curGroup = acc[key] ?? []; return { ...acc, [key]: [...curGroup, obj] }; }, {}); } const groupedPeople = groupBy(people, "age"); console.log(groupedPeople); // { // 20: [ // { name: 'Max', age: 20 }, // { name: 'Jane', age: 20 } // ], // 21: [{ name: 'Alice', age: 21 }] // }

// friends - an array of objects // where object field "books" is a list of favorite books const friends = [ { name: "Anna", books: ["Bible", "Harry Potter"], age: 21, }, { name: "Bob", books: ["War and peace", "Romeo and Juliet"], age: 26, }, { name: "Alice", books: ["The Lord of the Rings", "The Shining"], age: 18, }, ]; // allbooks - list which will contain all friends' books + // additional list contained in initialValue const allbooks = friends.reduce( (accumulator, currentValue) => [...accumulator, ...currentValue.books], ["Alphabet"], ); console.log(allbooks); // [ // 'Alphabet', 'Bible', 'Harry Potter', 'War and peace', // 'Romeo and Juliet', 'The Lord of the Rings', // 'The Shining' // ]

Catatan. Efek yang sama dapat dicapai dengan const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError _37 dan const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 38 sebagai const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 39 dengan kinerja yang lebih baik

const myArray = ["a", "b", "a", "b", "c", "e", "e", "c", "d", "d", "d", "d"]; const myArrayWithNoDuplicates = myArray.reduce((accumulator, currentValue) => { if (!accumulator.includes(currentValue)) { return [...accumulator, currentValue]; } return accumulator; }, []); console.log(myArrayWithNoDuplicates);

Menggunakan const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError _40 lalu const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 41 melintasi array dua kali, tetapi Anda dapat mencapai efek yang sama saat melintasi hanya sekali dengan const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5, sehingga menjadi lebih efisien. (Jika Anda suka const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 43 loop, Anda dapat memfilter dan memetakan saat melintasi sekali dengan const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 44. )

const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 0

const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError _1

const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError _2

const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5 melewatkan elemen yang hilang dalam array jarang, tetapi tidak melewatkan const flattened = [ [0, 1], [2, 3], [4, 5], ].reduce((accumulator, currentValue) => accumulator.concat(currentValue), []); // flattened is [0, 1, 2, 3, 4, 5] 9 nilai

const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError _3

Metode const getMax = (a, b) => Math.max(a, b); // callback is invoked for each element in the array starting at index 0 [1, 100].reduce(getMax, 50); // 100 [50].reduce(getMax, 10); // 50 // callback is invoked once for element at index 1 [1, 100].reduce(getMax); // 100 // callback is not invoked [50].reduce(getMax); // 50 [].reduce(getMax, 1); // 1 [].reduce(getMax); // TypeError 5 membaca properti const people = [ { name: "Alice", age: 21 }, { name: "Max", age: 20 }, { name: "Jane", age: 20 }, ]; function groupBy(objectArray, property) { return objectArray.reduce((acc, obj) => { const key = obj[property]; const curGroup = acc[key] ?? []; return { ...acc, [key]: [...curGroup, obj] }; }, {}); } const groupedPeople = groupBy(people, "age"); console.log(groupedPeople); // { // 20: [ // { name: 'Max', age: 20 }, // { name: 'Jane', age: 20 } // ], // 21: [{ name: 'Alice', age: 21 }] // } 5 dari const names = ["Alice", "Bob", "Tiff", "Bruce", "Alice"]; const countedNames = names.reduce((allNames, name) => { const currCount = allNames[name] ?? 0; return { ...allNames, [name]: currCount + 1, }; }, {}); // countedNames is: // { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 } 0 dan kemudian mengakses setiap indeks bilangan bulat

Apa itu Pengurangan dalam JavaScript?

reduce () adalah metode array di JavaScript yang mengeksekusi fungsi callback pada setiap elemen array , nilai hasil perhitungan pada elemen sebelumnya digunakan untuk melakukan perhitungan pada elemen berikutnya. Setelah menjalankan fungsi callback untuk semua elemen array, metode ini menghasilkan satu nilai.

Apa itu Peta dalam JavaScript?

. map () dapat digunakan untuk mengulang objek dalam larik dan, dengan cara yang mirip dengan larik tradisional, memodifikasi konten setiap objek individual dan kembali array yang baru. Modifikasi ini dilakukan berdasarkan apa yang dikembalikan dalam fungsi callback.

Metode apa yang bisa kita gunakan untuk mengurutkan elemen array berdasarkan kondisi tertentu dan akan membuat array baru?

filter() . membuat sebuah array baru dengan memperhatikan kondisi tertentu pada setiap elemen dari array yang sudah ada.

Postingan terbaru

LIHAT SEMUA