Artikel ini menyelidiki penggunaan map
, filter
, dan reduce
javascript yang berkesan, menangani perangkap biasa, kebolehbacaan, prestasi, dan senario penggunaan optimum.
map
, filter
, dan reduce
adalah fungsi pesanan yang lebih tinggi yang beroperasi pada tatasusunan, meningkatkan kesimpulan kod dan kebolehbacaan. Mereka mencapai ini dengan menghindari proses berulang, yang membolehkan anda memberi tumpuan kepada logik transformasi.
map()
: Fungsi ini mengubah setiap elemen array ke dalam elemen baru berdasarkan fungsi panggil balik yang disediakan. Arahan asal tetap tidak berubah. Fungsi panggil balik menerima tiga argumen: elemen semasa, indeksnya, dan array itu sendiri.
<code class="javascript">const numbers = [1, 2, 3, 4, 5]; const doubledNumbers = numbers.map(number => number * 2); // [2, 4, 6, 8, 10]</code>
filter()
: Fungsi ini mewujudkan array baru yang mengandungi hanya elemen yang melepasi keadaan tertentu yang ditakrifkan oleh fungsi panggil balik. Arahan asal masih tidak disentuh. Fungsi panggil balik menerima tiga argumen yang sama seperti map()
.
<code class="javascript">const numbers = [1, 2, 3, 4, 5]; const evenNumbers = numbers.filter(number => number % 2 === 0); // [2, 4]</code>
reduce()
: Fungsi ini secara kumulatif mengurangkan array kepada satu nilai (contohnya, jumlah, produk, maksimum). Ia memerlukan fungsi panggil balik dan nilai permulaan pilihan sebagai argumen. Fungsi panggil balik menerima empat argumen: penumpuk (pada mulanya nilai awal atau elemen array pertama), elemen semasa, indeksnya, dan array itu sendiri.
<code class="javascript">const numbers = [1, 2, 3, 4, 5]; const sum = numbers.reduce((accumulator, number) => accumulator number, 0); // 15 const product = numbers.reduce((accumulator, number) => accumulator * number, 1); // 120</code>
Penggunaan yang berkesan melibatkan memilih fungsi yang tepat untuk tugas tersebut. map
adalah untuk transformasi, filter
untuk pemilihan, dan reduce
pengagregatan. Menggabungkan mereka boleh membuat penyelesaian yang kuat dan elegan.
Beberapa perangkap boleh menghalang keberkesanan kaedah ini:
map
, filter
, dan reduce
direka untuk membuat tatasusunan baru . Mengubah suai array asal di dalam fungsi panggil balik boleh menyebabkan hasil dan pepijat yang tidak dijangka. Sentiasa buat nilai baru dalam panggilan balik.reduce()
: Menghilangkan nilai awal dalam reduce()
boleh menyebabkan masalah, terutamanya apabila memproses tatasusunan kosong. Sentiasa memberikan nilai awal yang sesuai melainkan jika anda mempunyai alasan tertentu untuk tidak.undefined
atau null
).Kebolehbacaan dan prestasi dapat ditingkatkan melalui beberapa strategi:
map
, filter
, dan reduce
sudah dioptimumkan untuk lelaran. Elakkan gelung bersarang atau lelaran yang tidak perlu dalam panggilan balik.map
, filter
, dan reduce
menawarkan prestasi yang baik berbanding dengan gelung manual. Pilihan antara map
, filter
, reduce
, dan kaedah array lain bergantung kepada tugas tertentu:
map()
apabila: anda perlu mengubah setiap elemen array ke dalam elemen baru tanpa mengubah panjang array asal. Alternatif seperti forEach
boleh digunakan, tetapi map
lebih deklaratif dan mengembalikan array baru.filter()
apabila: anda perlu memilih subset elemen dari array berdasarkan keadaan. Alternatif seperti gelung manual mungkin, tetapi filter
lebih ringkas dan mudah dibaca.reduce()
apabila: anda perlu mengumpul unsur -unsur array ke dalam satu nilai. Alternatif seperti gelung manual atau forEach
kurang elegan dan kurang dibaca untuk tugas ini.forEach
, find
, some
, atau every
mungkin lebih sesuai. Kaedah ini sering lebih cekap untuk operasi mudah. Walau bagaimanapun, untuk manipulasi data yang lebih kompleks, map
, filter
, dan reduce
pendekatan yang lebih bersih dan lebih mudah dibaca.Atas ialah kandungan terperinci Bagaimanakah saya menggunakan peta, penapis, dan mengurangkan dengan berkesan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!