ContohKurangi semua angka dalam array Show angka const = [175, 50, 25]; dokumen. getElementById("demo"). innerHTML = angka. kurangi(myFunc); function myFunc(total, num) { Bulatkan semua angka dan tampilkan jumlahnya angka const = [15. 5, 2. 3, 1. 1, 4. 7]; fungsi getSum(total, num) { Definisi dan PenggunaanMetode Metode Metode Metode CatatanPada 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 jugaMetode Array reduceRight() SintaksisHimpunan. kurangi (fungsi (total, Nilai saat ini, Indeks saat ini, arr), nilai awal) ParameterParameterDescriptionfunction()DiperlukanFungsi 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 PengembalianHasil akumulasi dari panggilan terakhir fungsi callbackDukungan Peramban
ES5 (JavaScript 2009) didukung penuh di semua browser ChromeEdgeFirefoxSafariOperaIEYaYaYaYa9-11Metode 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 nilaiPertama 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 5 adalah mengembalikan jumlah semua elemen dalam arrayPeredam 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
_7Fungsi untuk mengeksekusi setiap elemen dalam array. Nilai pengembaliannya menjadi nilai parameter 8 pada pemanggilan 7 berikutnya. Untuk pemanggilan terakhir, nilai yang dikembalikan menjadi nilai yang dikembalikan 5Fungsi tersebut dipanggil dengan argumen berikut _8Nilai yang dihasilkan dari panggilan sebelumnya ke 7. Pada panggilan pertama, _3 jika ditentukan, jika tidak, nilai 4 _5Nilai elemen saat ini. Pada panggilan pertama, nilai _4 jika 3 ditentukan, jika tidak, nilai 8 _9Posisi indeks _5 dalam larik. Pada panggilan pertama, 1 jika 3 ditentukan, jika tidak 3 _4Array _5 dipanggil 3 OpsionalNilai yang _8 diinisialisasi saat pertama kali callback dipanggil. Jika _3 ditentukan, 7 mulai mengeksekusi dengan nilai pertama dalam larik sebagai 5. Jika _3 tidak ditentukan, 8 diinisialisasi ke nilai pertama dalam larik, dan 7 mulai mengeksekusi dengan nilai kedua dalam larik sebagai 5. Dalam hal ini, jika array kosong (sehingga tidak ada nilai pertama yang dikembalikan sebagai 8), kesalahan akan terjadiNilai yang dihasilkan dari menjalankan fungsi panggilan balik "peredam" hingga penyelesaian seluruh larik _6Larik tidak berisi elemen dan _3 tidak disediakanMetode 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 _7 diteruskan ke 7 lagi pada pemanggilan berikutnya sebagai 8. Nilai akhir dari 8 (yang merupakan nilai yang dikembalikan dari 7 pada iterasi terakhir dari array) menjadi nilai kembalian dari 5 7 dipanggil hanya untuk indeks array yang telah menetapkan nilai. Itu tidak dipanggil untuk slot kosongTidak seperti yang lain, 5 tidak menerima argumen 7. 7 selalu dipanggil dengan 9 sebagai 0, yang diganti dengan 1 jika 7 tidak ketat 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 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 5 tidak mengubah array yang dipanggil, tetapi fungsi yang disediakan sebagai 7 dapat. Perhatikan, bagaimanapun, bahwa panjang array disimpan sebelum pemanggilan pertama dari 7. Karena itu
Peringatan. Modifikasi bersamaan dari jenis yang dijelaskan di atas sering menyebabkan kode yang sulit dipahami dan umumnya harus dihindari (kecuali dalam kasus khusus) Metode 5 adalah. Itu hanya mengharapkan nilai _0 memiliki properti 5 dan properti dengan kunci bilangan bulatFungsi rekursif seperti 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 5. Dalam kasus di mana 5 adalah pilihan terbaik, dokumentasi dan penamaan variabel semantik dapat membantu mengurangi kelemahan keterbacaanJika array hanya memiliki satu elemen (terlepas dari posisinya) dan tidak ada 3 yang disediakan, atau jika 3 disediakan tetapi array kosong, nilai tunggal akan dikembalikan tanpa memanggil 7Jika _3 disediakan dan array tidak kosong, maka metode pengurangan akan selalu memanggil fungsi callback mulai dari indeks 0Jika 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
Kode di bawah menunjukkan apa yang terjadi jika kita memanggil 5 dengan array dan tanpa nilai awal _Panggilan balik akan dipanggil empat kali, dengan argumen dan nilai kembalian di setiap panggilan sebagai berikut 8 5 7Return valueFirst call 8 9 3 1Second call 1 3 4 5Third call 5 7 8 9Fourth call 9 01 02 03Parameter _4 tidak pernah berubah selama proses — selalu 05. Nilai yang dikembalikan oleh _5 akan menjadi pemanggilan callback terakhir ( 03)Di sini kita mengurangi larik yang sama menggunakan algoritme yang sama, tetapi dengan 3 dari 09 diteruskan sebagai argumen kedua ke 5
Panggilan balik akan dipanggil lima kali, dengan argumen dan nilai kembalian di setiap panggilan sebagai berikut 8 5 7Return valueFirst call 09 8 1 17Second call 17 9 3 21Third call 21 3 4 25Fourth call 25 7 8 29Fifth call 29 01 02 33Nilai yang dikembalikan oleh _5 dalam hal ini adalah 33Untuk meringkas nilai yang terkandung dalam array objek, Anda harus memberikan 3, sehingga setiap item melewati fungsi Anda
Catatan. Efek yang sama dapat dicapai dengan _37 dan 38 sebagai 39 dengan kinerja yang lebih baik
Menggunakan _40 lalu 41 melintasi array dua kali, tetapi Anda dapat mencapai efek yang sama saat melintasi hanya sekali dengan 5, sehingga menjadi lebih efisien. (Jika Anda suka 43 loop, Anda dapat memfilter dan memetakan saat melintasi sekali dengan 44. ) 0 _1 _2 5 melewatkan elemen yang hilang dalam array jarang, tetapi tidak melewatkan 9 nilai _3Metode 5 membaca properti 5 dari 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. |