Pemrograman fungsional telah membuat percikan di dunia pengembangan akhir-akhir ini. Dan untuk alasan yang bagus. Teknik fungsional dapat membantu Anda menulis lebih banyak kode deklaratif yang lebih mudah dipahami secara sekilas, refactor, dan pengujian Show
Salah satu landasan pemrograman fungsional adalah penggunaan khusus daftar dan operasi daftar. Hal-hal itu persis seperti apa kedengarannya. array hal-hal dan hal-hal yang Anda lakukan untuk mereka. Tetapi pola pikir fungsional memperlakukan mereka sedikit berbeda dari yang Anda duga Cara Menggunakan Map, Filter, dan Reduce di JavaScript Artikel ini akan mencermati apa yang saya suka sebut sebagai operasi daftar "tiga besar". 326, 327, dan 328. Membungkus kepala Anda di sekitar ketiga fungsi ini adalah langkah penting untuk dapat menulis kode yang bersih dan fungsional, dan ini membuka pintu ke teknik pemrograman fungsional dan reaktif yang sangat kuat. Ingin tahu? Peta Dari Daftar ke DaftarSeringkali, kita mendapati diri kita perlu mengambil sebuah array dan memodifikasi setiap elemen di dalamnya dengan cara yang persis sama. Contoh umum dari hal ini adalah mengkuadratkan setiap elemen dalam larik angka, mengambil nama dari daftar pengguna, atau menjalankan regex terhadap larik string 326 adalah metode yang dibuat untuk melakukan hal itu. Itu didefinisikan pada 3_30, sehingga Anda dapat memanggilnya pada array apa pun, dan ia menerima panggilan balik sebagai argumen pertamanya. Sintaks untuk 3_26 ditunjukkan di bawah ini 1 let newArray = arr.map(callback(currentValue[, index[, array]]) { 2 // return element for newArray, after executing something
3 }[, thisArg]); Saat Anda memanggil 326 pada sebuah array, itu mengeksekusi callback tersebut pada setiap elemen di dalamnya, menampilkan array baru dengan semua nilai yang dikembalikan oleh callback Di balik layar, 3_26 meneruskan tiga argumen ke callback Anda
Mari kita lihat beberapa kode 3_26 dalam LatihanMisalkan kita memiliki aplikasi yang mengelola berbagai tugas Anda untuk hari itu. Setiap 3_36 adalah objek, masing-masing dengan ________0______37 dan 338 properti 1 // Durations are in minutes
2 const tasks = [ 3 let newArray = arr.map(callback(currentValue[, index[, array]]) {1 let newArray = arr.map(callback(currentValue[, index[, array]]) {2 let newArray = arr.map(callback(currentValue[, index[, array]]) {3 let newArray = arr.map(callback(currentValue[, index[, array]]) {4 let newArray = arr.map(callback(currentValue[, index[, array]]) {5 let newArray = arr.map(callback(currentValue[, index[, array]]) {6 let newArray = arr.map(callback(currentValue[, index[, array]]) {7 let newArray = arr.map(callback(currentValue[, index[, array]]) {8 let newArray = arr.map(callback(currentValue[, index[, array]]) {1 20 21 22 23 24 let newArray = arr.map(callback(currentValue[, index[, array]]) {7 26 let newArray = arr.map(callback(currentValue[, index[, array]]) {1 28 29 // return element for newArray, after executing something
0 // return element for newArray, after executing something
1 // return element for newArray, after executing something
2 // return element for newArray, after executing something
3 // return element for newArray, after executing something
4 // return element for newArray, after executing something
5Katakanlah kita ingin membuat array baru hanya dengan nama setiap tugas, sehingga kita dapat melihat semua yang telah kita lakukan hari ini. Menggunakan 3_39 loop, kami akan menulis sesuatu seperti ini 1 // return element for newArray, after executing something
72 // return element for newArray, after executing something
93 31 let newArray = arr.map(callback(currentValue[, index[, array]]) {2 33 let newArray = arr.map(callback(currentValue[, index[, array]]) {4 35 let newArray = arr.map(callback(currentValue[, index[, array]]) {6 let newArray = arr.map(callback(currentValue[, index[, array]]) {8 38 JavaScript juga menawarkan 340 loop. Ini berfungsi seperti loop 339, tetapi mengelola semua kekacauan saat memeriksa indeks loop kami terhadap panjang array untuk kami 1 // return element for newArray, after executing something
72 // return element for newArray, after executing something
93 }[, thisArg]);4 let newArray = arr.map(callback(currentValue[, index[, array]]) {2________11______6 let newArray = arr.map(callback(currentValue[, index[, array]]) {4 }[, thisArg]);8 let newArray = arr.map(callback(currentValue[, index[, array]]) {6 let newArray = arr.map(callback(currentValue[, index[, array]]) {8________0______8 Menggunakan 3_26, kita cukup menulis 1 13 2 15 3 }[, thisArg]);8 let newArray = arr.map(callback(currentValue[, index[, array]]) {2 let newArray = arr.map(callback(currentValue[, index[, array]]) {4 // Durations are in minutes
0Di sini saya menyertakan parameter 343 dan 344 untuk mengingatkan Anda bahwa parameter tersebut ada jika Anda membutuhkannya. Karena saya tidak menggunakannya di sini, Anda dapat mengabaikannya, dan kode akan berjalan dengan baik Cara penulisan yang lebih ringkas 326 dalam JavaScript modern adalah dengan fungsi panah 1 // Durations are in minutes
22 3 // Durations are in minutes
5Fungsi panah adalah bentuk pendek untuk fungsi satu baris yang hanya memiliki pernyataan 346. Tidak ada yang lebih mudah dibaca dari itu Ada beberapa perbedaan penting antara pendekatan yang berbeda
Ternyata, semua fungsi yang akan kita lihat hari ini memiliki karakteristik yang sama Fakta bahwa kita tidak perlu mengelola keadaan loop secara manual membuat kode kita lebih sederhana dan lebih mudah dipelihara. Fakta bahwa kita dapat mengoperasikan elemen secara langsung alih-alih harus mengindeks ke dalam array membuat semuanya lebih mudah dibaca. Menggunakan loop 3_40 memecahkan kedua masalah ini untuk kita. Namun 326 masih memiliki setidaknya dua keunggulan berbeda
Menjaga jumlah tempat di mana Anda memodifikasi keadaan seminimal mungkin adalah prinsip penting pemrograman fungsional. Itu membuat kode lebih aman dan lebih dimengerti GotchaCallback yang Anda teruskan ke 326 harus memiliki pernyataan eksplisit 346, atau 326 akan mengeluarkan array yang penuh dengan 353. Tidak sulit untuk mengingat untuk menyertakan nilai 346, tetapi tidak sulit untuk melupakannya. Jika Anda lupa, 3_26 tidak akan mengeluh. Sebaliknya, itu diam-diam akan mengembalikan array yang tidak berisi apa-apa. Kesalahan diam seperti itu bisa sangat sulit untuk di-debug. Untungnya, ini adalah satu-satunya gotcha dengan 326. Tapi itu jebakan yang cukup umum yang harus saya tekankan. Selalu pastikan callback Anda berisi pernyataan ________0______46 PenerapanMembaca implementasi merupakan bagian penting dari pemahaman. Jadi mari kita menulis 326 ringan kita sendiri untuk lebih memahami apa yang terjadi di bawah tenda. Jika Anda ingin melihat implementasi kualitas produksi, lihat polyfill Mozilla di MDN 1 // Durations are in minutes
72 // Durations are in minutes
93 // return element for newArray, after executing something
9____7_______223 let newArray = arr.map(callback(currentValue[, index[, array]]) {___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ E jelas Kode ini menerima array dan fungsi callback sebagai argumen. Itu kemudian membuat larik baru, mengeksekusi panggilan balik pada setiap elemen pada larik yang kami lewati, mendorong hasilnya ke dalam larik baru, dan mengembalikan larik baru. Jika Anda menjalankan ini di konsol Anda, Anda akan mendapatkan hasil yang sama seperti sebelumnya. Saat kita menggunakan for loop di bawah tenda, membungkusnya menjadi sebuah fungsi akan menyembunyikan detailnya dan memungkinkan kita bekerja dengan abstraksi sebagai gantinya. Hal itu membuat kode kita lebih bersifat deklaratif—dia mengatakan apa yang harus dilakukan, bukan bagaimana melakukannya. Anda akan menghargai betapa lebih mudah dibaca, dipelihara, dan, erm, debuggable ini dapat membuat kode Anda Saring KebisinganOperasi larik kita berikutnya adalah 327. Itu persis seperti apa kedengarannya. Dibutuhkan array dan menyaring elemen yang tidak diinginkan Sintaks untuk filter adalah 1 const tasks = [5 2 const tasks = [7 3 }[, thisArg]); Sama seperti 3_26, 327 melewati panggilan balik Anda tiga argumen
Pertimbangkan contoh berikut, yang memfilter string apa pun yang kurang dari 8 karakter 1 let newArray = arr.map(callback(currentValue[, index[, array]]) {01 2 let newArray = arr.map(callback(currentValue[, index[, array]]) {03________0__7_______05 Hasil yang diharapkan akan 1 let newArray = arr.map(callback(currentValue[, index[, array]]) {07 Mari kita lihat kembali contoh tugas kita. Alih-alih mengeluarkan nama setiap tugas, katakanlah saya ingin mendapatkan daftar hanya tugas yang membutuhkan waktu dua jam atau lebih untuk saya selesaikan Menggunakan 3_40, kami akan menulis 1 let newArray = arr.map(callback(currentValue[, index[, array]]) {09 2 // return element for newArray, after executing something
93 }[, thisArg]);4 let newArray = arr.map(callback(currentValue[, index[, array]]) {2 let newArray = arr.map(callback(currentValue[, index[, array]]) {15 let newArray = arr.map(callback(currentValue[, index[, array]]) {4 let newArray = arr.map(callback(currentValue[, index[, array]]) {17 let newArray = arr.map(callback(currentValue[, index[, array]]) {6 let newArray = arr.map(callback(currentValue[, index[, array]]) {19 let newArray = arr.map(callback(currentValue[, index[, array]]) {8 }[, thisArg]);8 20 22 let newArray = arr.map(callback(currentValue[, index[, array]]) {24 24 26 let newArray = arr.map(callback(currentValue[, index[, array]]) {27 28 let newArray = arr.map(callback(currentValue[, index[, array]]) {29 // return element for newArray, after executing something
0let newArray = arr.map(callback(currentValue[, index[, array]]) {31 Dengan 3_27, kita cukup menulis 1 let newArray = arr.map(callback(currentValue[, index[, array]]) {33 Sama seperti 3_26, 327 memungkinkan kita
GotchaCallback yang Anda teruskan ke 3_26 harus menyertakan pernyataan pengembalian jika Anda ingin berfungsi dengan baik. Dengan 3_27, Anda juga harus menyertakan pernyataan pengembalian (kecuali jika Anda menggunakan fungsi panah), dan Anda harus memastikan pernyataan tersebut mengembalikan nilai boolean Jika Anda lupa pernyataan pengembalian, panggilan balik Anda akan mengembalikan 353, yang 327 akan memaksa ke 383. Alih-alih melempar kesalahan, itu akan mengembalikan array kosong secara diam-diam. Jika Anda mengambil rute lain dan mengembalikan sesuatu yang tidak secara eksplisit 384 atau 383, maka 327 akan mencoba mencari tahu apa yang Anda maksud dengan menerapkan aturan pemaksaan jenis JavaScript. Lebih sering daripada tidak, ini adalah bug. Dan, seperti melupakan pernyataan pengembalian Anda, itu akan menjadi diam. Selalu pastikan callback Anda menyertakan pernyataan pengembalian yang eksplisit. Dan selalu pastikan callback Anda di 327 return 384 atau 383. Kewarasan Anda akan berterima kasih PenerapanSekali lagi, cara terbaik untuk memahami sebuah kode adalah. baik, untuk menulisnya. Ayo gulung 327 ringan kita sendiri. Orang-orang baik di Mozilla memiliki polyfill berkekuatan industri untuk Anda baca juga 1 let newArray = arr.map(callback(currentValue[, index[, array]]) {35 2 // return element for newArray, after executing something
93 let newArray = arr.map(callback(currentValue[, index[, array]]) {39 let newArray = arr.map(callback(currentValue[, index[, array]]) {2 // return element for newArray, after executing something
9let newArray = arr.map(callback(currentValue[, index[, array]]) {4 let newArray = arr.map(callback(currentValue[, index[, array]]) {43 let newArray = arr.map(callback(currentValue[, index[, array]]) {6 let newArray = arr.map(callback(currentValue[, index[, array]]) {45 let newArray = arr.map(callback(currentValue[, index[, array]]) {8 let newArray = arr.map(callback(currentValue[, index[, array]]) {47 20 let newArray = arr.map(callback(currentValue[, index[, array]]) {49 22 let newArray = arr.map(callback(currentValue[, index[, array]]) {51 24 // return element for newArray, after executing something
926 let newArray = arr.map(callback(currentValue[, index[, array]]) {55 28 // return element for newArray, after executing something
9 // return element for newArray, after executing something
0const tasks = [3 Metode PenguranganSintaks untuk metode array 3_28 dalam JavaScript adalah 1 let newArray = arr.map(callback(currentValue[, index[, array]]) {61 2 let newArray = arr.map(callback(currentValue[, index[, array]]) {63 3 let newArray = arr.map(callback(currentValue[, index[, array]]) {65 3_26 membuat array baru dengan mengubah setiap elemen dalam array satu per satu. 3_27 membuat array baru dengan menghapus elemen yang bukan miliknya. 328, di sisi lain, mengambil semua elemen dalam array dan menguranginya menjadi satu nilai Sama seperti 326 dan 327, 328 didefinisikan pada 330 dan juga tersedia pada larik apa pun, dan Anda meneruskan panggilan balik sebagai argumen pertamanya. Tapi itu juga membutuhkan argumen kedua. nilai untuk mulai menggabungkan semua elemen array Anda. 328 melewati panggilan balik Anda empat argumen
Perhatikan bahwa callback mendapatkan nilai sebelumnya pada setiap iterasi. Pada iterasi pertama, tidak ada nilai sebelumnya. Inilah mengapa Anda memiliki opsi untuk meneruskan 328 nilai awal. Ini bertindak sebagai "nilai sebelumnya" untuk iterasi pertama, bila sebaliknya tidak akan ada Terakhir, ingatlah bahwa 328 mengembalikan satu nilai, bukan larik yang berisi satu item. Ini lebih penting daripada kelihatannya, dan saya akan kembali ke contoh 3_28 dalam LatihanKatakanlah Anda ingin mencari jumlah dari daftar angka. Menggunakan loop, akan terlihat seperti ini 1 let newArray = arr.map(callback(currentValue[, index[, array]]) {67 2 let newArray = arr.map(callback(currentValue[, index[, array]]) {69 3 let newArray = arr.map(callback(currentValue[, index[, array]]) {71 let newArray = arr.map(callback(currentValue[, index[, array]]) {2 let newArray = arr.map(callback(currentValue[, index[, array]]) {73 let newArray = arr.map(callback(currentValue[, index[, array]]) {4 let newArray = arr.map(callback(currentValue[, index[, array]]) {75 let newArray = arr.map(callback(currentValue[, index[, array]]) {6________11______8________7______8 20__8 Meskipun ini bukan kasus penggunaan yang buruk untuk 340, 328 masih memungkinkan kita menghindari mutasi. Dengan 3_28, kami akan menulis 1 let newArray = arr.map(callback(currentValue[, index[, array]]) {82 2 let newArray = arr.map(callback(currentValue[, index[, array]]) {84 3 let newArray = arr.map(callback(currentValue[, index[, array]]) {86 let newArray = arr.map(callback(currentValue[, index[, array]]) {2 let newArray = arr.map(callback(currentValue[, index[, array]]) {88 Pertama, kami memanggil 328 di daftar nomor kami. Kami meneruskannya sebagai callback, yang menerima nilai sebelumnya dan nilai saat ini sebagai argumen, dan menampilkan hasil penjumlahan keduanya. Karena kita meneruskan }[, thisArg]);08 sebagai argumen kedua ke 328, itu akan menggunakannya sebagai nilai }[, thisArg]);10 pada iterasi pertama Dengan fungsi panah, kami akan menulisnya seperti ini 1 let newArray = arr.map(callback(currentValue[, index[, array]]) {90 2 let newArray = arr.map(callback(currentValue[, index[, array]]) {92 Jika kita mengambil langkah demi langkah, terlihat seperti ini Iteration PreviousCurrentTotal10112123333646410510515Jika Anda bukan penggemar tabel, jalankan cuplikan ini di konsol 1 let newArray = arr.map(callback(currentValue[, index[, array]]) {94________8___ let newArray = arr.map(callback(currentValue[, index[, array]]) {96 3 let newArray = arr.map(callback(currentValue[, index[, array]]) {98 let newArray = arr.map(callback(currentValue[, index[, array]]) {2 200 let newArray = arr.map(callback(currentValue[, index[, array]]) {_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________ges Untuk rekap. 328 mengulangi semua elemen array, menggabungkannya dengan cara apa pun yang Anda tentukan dalam panggilan balik Anda. Pada setiap iterasi, callback Anda memiliki akses ke nilai sebelumnya, yang merupakan nilai total sejauh ini, atau akumulasi; Mari kembali ke contoh tugas kita. Kami mendapatkan daftar nama tugas dari 326, dan daftar tugas yang difilter yang membutuhkan waktu lama. baik, 3_27. Bagaimana jika kita ingin mengetahui jumlah total waktu yang kita habiskan untuk bekerja hari ini? Menggunakan loop 3_40, Anda akan menulis 1 214 2 let newArray = arr.map(callback(currentValue[, index[, array]]) {71 3 }[, thisArg]);4 let newArray = arr.map(callback(currentValue[, index[, array]]) {2 220 let newArray = arr.map(callback(currentValue[, index[, array]]) {4 222 let newArray = arr.map(callback(currentValue[, index[, array]]) {6 224 let newArray = arr.map(callback(currentValue[, index[, array]]) {8 }[, thisArg]);8 20 // return element for newArray, after executing something
922 230 24 // return element for newArray, after executing something
926 234 Dengan 3_28, itu menjadi 1 236 2 238 Itu hampir semua yang ada untuk itu. Hampir, karena JavaScript memberi kita satu lagi metode yang kurang dikenal, yang disebut }[, thisArg]);16. Pada contoh di atas, 328 dimulai dari item pertama dalam larik, berulang dari kiri ke kanan 1 240 2 242 3 244 let newArray = arr.map(callback(currentValue[, index[, array]]) {2 }[, thisArg]);8 let newArray = arr.map(callback(currentValue[, index[, array]]) {4 248 let newArray = arr.map(callback(currentValue[, index[, array]]) {6 250 }[, thisArg]);_16 melakukan hal yang sama, tetapi berlawanan arah 1 240 2 254 3 244 let newArray = arr.map(callback(currentValue[, index[, array]]) {2 }[, thisArg]);8 let newArray = arr.map(callback(currentValue[, index[, array]]) {4 // return element for newArray, after executing something
9let newArray = arr.map(callback(currentValue[, index[, array]]) {6 262 Saya menggunakan 3_28 setiap hari, tetapi saya tidak pernah membutuhkan }[, thisArg]);16. Saya rasa Anda mungkin juga tidak akan melakukannya. Tetapi jika Anda pernah melakukannya, sekarang Anda tahu itu ada GotchaTiga gotcha besar dengan 3_28 adalah
Untungnya, dua yang pertama mudah dihindari. Memutuskan berapa nilai awal Anda bergantung pada apa yang Anda lakukan, tetapi Anda akan segera menguasainya Yang terakhir mungkin tampak agak aneh. Jika 3_28 hanya mengembalikan satu nilai, mengapa Anda mengharapkan array? Ada beberapa alasan bagus untuk itu. Pertama, 3_28 selalu menampilkan nilai tunggal, tidak selalu angka tunggal. Jika Anda mengurangi larik larik, misalnya, ia akan mengembalikan larik tunggal. Jika Anda terbiasa mengurangi larik, akan adil untuk berharap bahwa larik yang berisi satu item tidak akan menjadi kasus khusus Kedua, jika 328 mengembalikan array dengan nilai tunggal, secara alami akan cocok dengan 326 dan 327, dan fungsi lain pada array yang kemungkinan besar akan Anda gunakan dengannya. PenerapanSaatnya untuk penampilan terakhir kita di bawah tenda. Seperti biasa, Mozilla memiliki polyfill antipeluru untuk dikurangi jika Anda ingin memeriksanya 1 264 2 266________00_______ 268 let newArray = arr.map(callback(currentValue[, index[, array]]) {2 270 let newArray = arr.map(callback(currentValue[, index[, array]]) {____________________________________________________________________________________________________________________________________________________________________ Dua hal yang perlu diperhatikan di sini
Menyatukannya. Memetakan, Memfilter, Mengurangi, dan Kemampuan BerantaiPada titik ini, Anda mungkin tidak begitu terkesan. Cukup adil. 326, 327, dan 328, dengan sendirinya, tidak terlalu menarik. Lagi pula, kekuatan mereka yang sebenarnya terletak pada kemampuan rantainya. Katakanlah saya ingin melakukan hal berikut
Pertama, mari kita tentukan tugas kita untuk hari Senin dan Selasa 1 282 2 284 3 286 let newArray = arr.map(callback(currentValue[, index[, array]]) {2 288 let newArray = arr.map(callback(currentValue[, index[, array]]) {4 290 let newArray = arr.map(callback(currentValue[, index[, array]]) {6 284 let newArray = arr.map(callback(currentValue[, index[, array]]) {8 294 20 296 22 298 24 // return element for newArray, after executing something
0026 // return element for newArray, after executing something
928 // return element for newArray, after executing something
04 // return element for newArray, after executing something
0284 // return element for newArray, after executing something
2 // return element for newArray, after executing something
08 // return element for newArray, after executing something
4 // return element for newArray, after executing something
10 // return element for newArray, after executing something
11290 // return element for newArray, after executing something
13284 // return element for newArray, after executing something
15 // return element for newArray, after executing something
16 // return element for newArray, after executing something
17288 // return element for newArray, after executing something
19290 // return element for newArray, after executing something
21284 // return element for newArray, after executing something
23 // return element for newArray, after executing something
24 // return element for newArray, after executing something
25 // return element for newArray, after executing something
26 // return element for newArray, after executing something
27298 // return element for newArray, after executing something
29 // return element for newArray, after executing something
00 // return element for newArray, after executing something
31 // return element for newArray, after executing something
32 // return element for newArray, after executing something
33 // return element for newArray, after executing something
34Dan sekarang, transformasi kami yang terlihat cantik 1 // return element for newArray, after executing something
362 // return element for newArray, after executing something
383 // return element for newArray, after executing something
40let newArray = arr.map(callback(currentValue[, index[, array]]) {2 // return element for newArray, after executing something
42let newArray = arr.map(callback(currentValue[, index[, array]]) {4 // return element for newArray, after executing something
44let newArray = arr.map(callback(currentValue[, index[, array]]) {6 // return element for newArray, after executing something
46let newArray = arr.map(callback(currentValue[, index[, array]]) {8 // return element for newArray, after executing something
4820 // return element for newArray, after executing something
5022 // return element for newArray, after executing something
5224 // return element for newArray, after executing something
5426 // return element for newArray, after executing something
5628 // return element for newArray, after executing something
58 // return element for newArray, after executing something
0 // return element for newArray, after executing something
60 // return element for newArray, after executing something
2 // return element for newArray, after executing something
62 // return element for newArray, after executing something
4 // return element for newArray, after executing something
64 // return element for newArray, after executing something
11 // return element for newArray, after executing something
66Jika Anda sudah sampai sejauh ini, ini seharusnya cukup mudah. Namun, ada dua keanehan untuk dijelaskan. Pertama, di baris 10, saya harus menulis 1 // return element for newArray, after executing something
682 // return element for newArray, after executing something
703 // return element for newArray, after executing something
72let newArray = arr.map(callback(currentValue[, index[, array]]) {2 // return element for newArray, after executing something
74Dua hal untuk dijelaskan di sini
Bagian kedua yang mungkin membuat Anda sedikit tidak nyaman adalah 328 terakhir, yaitu 1 // return element for newArray, after executing something
682 // return element for newArray, after executing something
783 // return element for newArray, after executing something
80let newArray = arr.map(callback(currentValue[, index[, array]]) {2 // return element for newArray, after executing something
82let newArray = arr.map(callback(currentValue[, index[, array]]) {4 // return element for newArray, after executing something
84let newArray = arr.map(callback(currentValue[, index[, array]]) {6 }[, thisArg]);8 Panggilan ke 3_26 mengembalikan larik yang berisi satu nilai. Di sini, kami memanggil 328 untuk menarik nilai tersebut Terakhir, mari kita lihat bagaimana teman kita 340 loop akan menyelesaikannya 1 // return element for newArray, after executing something
882 // return element for newArray, after executing something
903 // return element for newArray, after executing something
92let newArray = arr.map(callback(currentValue[, index[, array]]) {2 // return element for newArray, after executing something
94let newArray = arr.map(callback(currentValue[, index[, array]]) {4 248 let newArray = arr.map(callback(currentValue[, index[, array]]) {6 // return element for newArray, after executing something
98let newArray = arr.map(callback(currentValue[, index[, array]]) {8 300 20 let newArray = arr.map(callback(currentValue[, index[, array]]) {71 22 304 24 306 26 let newArray = arr.map(callback(currentValue[, index[, array]]) {19 28 }[, thisArg]);8 // return element for newArray, after executing something
0248 // return element for newArray, after executing something
2314 // return element for newArray, after executing something
4316 // return element for newArray, after executing something
11}[, thisArg]);8 // return element for newArray, after executing something
13 // return element for newArray, after executing something
15 // return element for newArray, after executing something
17 // return element for newArray, after executing something
19323 // return element for newArray, after executing something
21 // return element for newArray, after executing something
9Bisa ditoleransi, tapi berisik Kesimpulan dan Langkah SelanjutnyaDalam tutorial ini, Anda telah mempelajari cara kerja 326, 327, dan 328; . Anda telah melihat bahwa mereka semua memungkinkan Anda untuk menghindari keadaan bermutasi, yang menggunakan 339 dan 340 loop memerlukan, dan Anda sekarang harus memiliki ide yang baik tentang cara merangkai semuanya. Sekarang, saya yakin Anda bersemangat untuk berlatih dan membaca lebih lanjut. Untuk masterclass dalam pemrograman fungsional dalam JavaScript, lihat kursus online kami Bisakah kita menggunakan filter dan peta bersama dalam JavaScript?Fungsi Array#map() dan Array#filter() JavaScript sangat bagus jika digunakan bersama karena memungkinkan Anda membuat fungsi sederhana. Misalnya, inilah kasus penggunaan dasar untuk filter(). memfilter semua angka yang kurang dari 100 dari array numerik. Fungsi ini bekerja dengan baik pada array angka.
Bagaimana cara menggunakan filter dan temukan bersama dalam JavaScript?filter() mengembalikan larik yang berisi elemen yang memenuhi syarat, tetapi find() mengembalikan elemen itu sendiri yang memenuhi syarat . Dalam filter() , seluruh larik diulang meskipun elemen yang dicari ada di awal.
Apa perbedaan antara peta () dan filter ()?Peta(). Lakukan operasi yang sama pada semua elemen dalam iterable. Contohnya adalah melakukan transformasi log pada setiap elemen. Saring(). Memfilter subkumpulan elemen yang memenuhi kondisi (kumpulan) tertentu. Contohnya adalah memfilter kalimat yang mengandung string tertentu
Apa itu filter () peta () dan kurangi ()?Fungsi map(), filter(), dan reduce() semuanya melakukan hal yang sama. Mereka masing-masing mengambil fungsi dan daftar elemen, lalu mengembalikan hasil penerapan fungsi ke setiap elemen dalam daftar . Seperti yang dinyatakan sebelumnya, Python memiliki fungsi bawaan seperti map(), filter(), dan reduce(). |