Cara menggunakan STR.EXTRACT di JavaScript
Salah satu pilar pemrograman fungsional adalah penggunaan khusus dari register dan operasi register. Dan hal-hal persis seperti apa yang mereka dengar. array hal, dan hal-hal yang Anda lakukan untuk itu. Tetapi pola pikir fungsional memperlakukannya sedikit berbeda dari yang Anda duga Show Artikel ini akan melihat lebih dekat apa yang saya suka sebut sebagai operasi registri "tiga besar". var tasks = [43, var tasks = [44, dan var tasks = [45. Membungkus kepala Anda di sekitar ketiga fungsi ini merupakan langkah penting untuk dapat menulis kode fungsional yang bersih, dan membuka pintu ke teknik pemrograman fungsional dan reaktif yang sangat kuat. Ini juga berarti Anda tidak perlu menulis var tasks = [46 pengulangan lagi 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 adalah mengkuadratkan setiap elemen dalam larik angka, mengambil nama dari daftar pengguna, atau menjalankan regex pada larik string. var tasks = [_43 adalah metode yang dibuat untuk melakukan itu. Itu didefinisikan di var tasks = [_48, sehingga Anda dapat memanggilnya di array apa pun, dan menerima panggilan balik sebagai argumen pertama Saat Anda memanggil var tasks = [43 pada sebuah array, itu akan menjalankan panggilan balik pada setiap elemen di dalamnya, mengembalikan array baru dengan semua nilai yang dikembalikan oleh panggilan balik Pada dasarnya, var tasks = [_43 meneruskan tiga argumen ke callback Anda
Mari kita lihat beberapa kode var tasks = [ _43 dalam PraktekKatakanlah kita memiliki aplikasi yang mengatur berbagai tugas Anda untuk hari itu. Setiap var tasks = [_52 adalah objek, masing-masing dengan properti var tasks = [53 dan var tasks = [54 1 // Durations are in minutes
2 3 var tasks = [ 4 5 {
6 7 // Durations are in minutes
0// Durations are in minutes
1// Durations are in minutes
2// Durations are in minutes
3// Durations are in minutes
4// Durations are in minutes
5// Durations are in minutes
6// Durations are in minutes
7// Durations are in minutes
8 {
20 21 22 23 24 25 26 27 // Durations are in minutes
629 30 {
32 33 34 35 36 37 38 39 var tasks = [0 var tasks = [1 var tasks = [2 var tasks = [3 Katakanlah kita ingin membuat array baru hanya dengan nama setiap tugas, sehingga kita dapat melihat semua yang telah kita selesaikan hari ini. Menggunakan var tasks = [_46 loop, kami akan menulis sesuatu seperti ini 1 var tasks = [5 2 3 var tasks = [8 4 5 41 6 7 44 JavaScript juga menawarkan iterasi var tasks = [_56. Ini berfungsi seperti var tasks = [46 loop, tetapi mengatur semua kekacauan memeriksa indeks loop kami terhadap panjang array untuk kami 1 46 2 3 49 4 5 52 6 54 7 56 Dengan menggunakan _______0________43, kita dapat menulis 1 58 2 3 {
14 5 {
4Saya menyertakan parameter var tasks = [59 dan var tasks = [60 untuk mengingatkan Anda bahwa mereka ada jika Anda membutuhkannya. Karena saya tidak menggunakannya di sini, Anda dapat mengabaikannya, dan kode akan berjalan dengan baik Ada beberapa perbedaan penting antara kedua pendekatan tersebut
Menghasilkan, semua fungsi yang akan kita lihat hari ini di bagian karakteristik Fakta bahwa kita tidak perlu mengelola status perulangan secara manual membuat kode kita lebih sederhana dan lebih mudah dipelihara. Fakta bahwa kita dapat mengoperasikan elemen secara langsung daripada harus mengindeks ke dalam array membuat semuanya lebih mudah dibaca Menggunakan iterasi var tasks = [_56 menyelesaikan kedua masalah ini untuk kita. Tapi var tasks = [43 masih memiliki setidaknya dua keunggulan berbeda
Menjaga jumlah tempat di mana Anda mengubah status menjadi minimum mutlak adalah prinsip penting pemrograman fungsional. Itu membuat kode lebih aman dan lebih mudah dipahami Sekarang juga saat yang tepat untuk menunjukkan bahwa jika Anda berada di Node, menguji contoh ini di konsol browser Firefox, atau menggunakan Babel atau Traceur, Anda dapat menulis ini lebih pendek dengan fungsi panah ES6 1 {
6Fungsi panah memungkinkan kita meninggalkan kata kunci var tasks = [65 dalam satu baris Tidak ada yang lebih mudah dibaca dari itu Kena kauPanggilan balik yang Anda berikan ke var tasks = [_43 harus memiliki pernyataan var tasks = [65 yang eksplisit, atau var tasks = [43 akan mengeluarkan array yang var tasks = [66. Tidak sulit untuk mengingat untuk memasukkan nilai var tasks = [65, tetapi tidak sulit untuk melupakannya Jika Anda lupa, var tasks = [43 tidak akan mengeluh. Sebaliknya, itu akan secara diam-diam mengembalikan array yang penuh dengan kekosongan. Kesalahan senyap seperti itu bisa sangat sulit untuk di-debug Untungnya, ini adalah satu-satunya gotcha dengan var tasks = [43. Tapi itu jebakan yang cukup umum yang harus saya tunjukkan. Selalu pastikan panggilan balik Anda berisi pernyataan var tasks = [65 PenerapanMembaca implementasi adalah bagian penting dari pemahaman. Jadi, mari kita menulis cahaya kita sendiri var tasks = [43 untuk lebih memahami apa yang pada dasarnya terjadi. Jika Anda ingin melihat implementasi kualitas produksi, lihat Mozilla polyfill di MDN 1 {
82 3 61 4 5 64 6 66 7 68 // Durations are in minutes
1// Durations are in minutes
271 // Durations are in minutes
4// Durations are in minutes
574 // Durations are in minutes
7// Durations are in minutes
877 20 21 // Durations are in minutes
0023 24 {
4Kode ini menerima array dan fungsi callback sebagai argumen. Ini kemudian membuat array baru; . Jika Anda menjalankan ini di konsol Anda, Anda akan mendapatkan hasil yang sama seperti sebelumnya. Pastikan Anda menginisialisasi var tasks = [_83 sebelum Anda mengujinya Meskipun pada dasarnya kita menggunakan perulangan for, membungkusnya dalam sebuah fungsi akan menyembunyikan detailnya dan memungkinkan kita untuk bekerja dengan abstraksi. Itu membuat kode kita lebih deklaratif—ia mengatakan apa yang harus dilakukan, bukan bagaimana melakukannya. Anda akan menghargai betapa mudahnya kode Anda dibuat untuk dibaca, dipelihara, dan, erm, debug Menyaring KebisinganSelanjutnya dari operasi array kami adalah var tasks = [_44. Seperti itulah kedengarannya. Dibutuhkan array, dan menyaring elemen yang tidak diinginkan Seperti var tasks = [_43, var tasks = [44 didefinisikan dalam var tasks = [48. Ini tersedia dalam berbagai array, dan Anda memberinya panggilan balik sebagai argumen pertama. var tasks = [_44 mengeksekusi callback pada setiap elemen array, dan membuat array baru yang hanya berisi elemen di mana callback mengembalikan nilai var tasks = [89 Juga seperti var tasks = [_43, var tasks = [44 meneruskan tiga argumen ke callback Anda
var tasks = [ _44 dalam PraktekMari kita lihat kembali contoh tugas kita. Alih-alih menarik nama setiap tugas, katakanlah saya ingin mendapatkan daftar tugas yang membutuhkan waktu dua jam atau lebih untuk diselesaikan Menggunakan var tasks = [_56, kami akan menulis 1________13______05 2 3 // Durations are in minutes
084 // Durations are in minutes
105 // Durations are in minutes
126 // Durations are in minutes
147 {
4Dengan var tasks = [_44 1 // Durations are in minutes
182 // Durations are in minutes
203 {
44 5 // Durations are in minutes
256 // Durations are in minutes
27Di sini, saya telah memperpanjang dan meninggalkan argumen var tasks = [_59 dan var tasks = [60 ke panggilan balik kami, karena kami tidak menggunakannya Sama seperti var tasks = [_43, var tasks = [44 memungkinkan kita
Kena kauPanggilan balik yang Anda berikan ke var tasks = [_43 harus menyertakan pernyataan pengembalian jika Anda ingin berfungsi dengan benar. Dengan var tasks = [_44, Anda juga harus menyertakan pernyataan pengembalian, dan Anda harus memastikan pernyataan tersebut mengembalikan nilai boolean Jika Anda lupa pernyataan pengembalian, panggilan balik Anda akan mengembalikan var tasks = [66, yang var tasks = [44 tidak akan membantu dengan memaksa ke 406. Alih-alih melempar kesalahan, itu akan mengembalikan array kosong secara diam-diam Jika Anda pergi ke rute lain, dan mengembalikan sesuatu yang tidak secara eksplisit var tasks = [89 atau 406, maka var tasks = [44 akan mencoba mencari tahu apa yang Anda maksud dengan menerapkan aturan pemaksaan JavaScript. Lebih sering daripada tidak, ini adalah bug. Dan, seperti melupakan pernyataan pengembalian Anda, itu akan menjadi pernyataan diam Selalu pastikan panggilan balik Anda menyertakan pernyataan pengembalian yang eksplisit. Dan selalu pastikan panggilan balik Anda di var tasks = [_44 mengembalikan nilai var tasks = [89 atau 406. Kewarasan Anda akan berterima kasih PenerapanSekali lagi, cara terbaik untuk memahami sepotong kode adalah dengan. baik, dengan menulisnya. Ayo gulung var tasks = [44 ringan kita sendiri. Orang-orang baik di Mozilla memiliki polyfill kekuatan industri untuk Anda baca juga 1 // Durations are in minutes
292 3 // Durations are in minutes
324 5 64 6 // Durations are in minutes
377 // Durations are in minutes
39// Durations are in minutes
1// Durations are in minutes
41// Durations are in minutes
2________20var tasks = [_13_______4 // Durations are in minutes
5// Durations are in minutes
46584________12174________ Mengurangi Arrayvar tasks = [_43 membuat array baru dengan mengubah setiap elemen dalam array, secara terpisah. var tasks = [44 membuat larik baru dengan menghapus elemen yang bukan miliknya. var tasks = [45, di sisi lain, mengambil semua elemen dalam array, dan menguranginya menjadi satu nilai Sama seperti var tasks = [43 dan var tasks = [44, var tasks = [45 didefinisikan pada var tasks = [48 dan tersedia dalam larik apa pun, dan Anda meneruskan panggilan balik sebagai argumen pertama. Tapi ini juga membutuhkan argumen kedua opsional. value untuk mulai menggabungkan semua elemen array Anda ke dalamnya var tasks = [45 melewati empat argumen panggilan balik Anda
Perhatikan bahwa callback mendapatkan nilai sebelumnya pada setiap iterasi. Pada iterasi pertama, tidak ada nilai sebelumnya. Inilah mengapa Anda memiliki opsi untuk melanjutkan var tasks = [45 sebagai nilai awal. Ini bertindak sebagai "nilai sebelumnya" untuk iterasi pertama, ketika tidak ada yang menjadi yang pertama Terakhir, ingat bahwa var tasks = [_45 mengembalikan nilai tunggal, bukan larik yang berisi satu item. Ini lebih penting daripada yang terlihat, dan saya akan kembali ke contoh var tasks = [ _45 dalam PraktekKarena var tasks = [_45 adalah fungsi yang pada awalnya dianggap paling asing oleh orang-orang, kita akan mulai dengan berjalan selangkah demi selangkah melalui sesuatu yang sederhana Katakanlah kita ingin mencari jumlah dari daftar angka. Menggunakan loop, tampilannya seperti ini 1 // Durations are in minutes
512 // Durations are in minutes
533 54 4 // Durations are in minutes
575 // Durations are in minutes
596 {
4Meskipun ini bukan kasus penggunaan yang buruk untuk var tasks = [56, var tasks = [45 masih memiliki kelebihan yang memungkinkan kita menghindari mutasi. Dengan var tasks = [_45, kami akan menulis 1 // Durations are in minutes
632 // Durations are in minutes
653 // Durations are in minutes
67Pertama, kami memanggil _______0________45 di 431 register kami. Kami memberinya panggilan balik, yang menerima nilai sebelumnya dan nilai saat ini sebagai argumen, dan mengembalikan hasil penjumlahan keduanya. Karena kami melewati 432 sebagai argumen kedua untuk melakukan var tasks = [45, yang akan digunakan sebagai nilai (sebelumnya) 434 di loop pertama Jika kita pergi langkah demi langkah, terlihat seperti ini PerulanganSebelumnyaSaat iniTotal10112123333646410510515Jika Anda bukan penggemar tabel, jalankan cuplikan ini di konsol 1________13______69 2________13______71 3 // Durations are in minutes
734 // Durations are in minutes
755________13______77 6 // Durations are in minutes
797 // Durations are in minutes
67_______13___1____1______1______1_____1Pendeknya. var tasks = [45 mengulangi semua elemen array, menggabungkannya dengan cara yang Anda tentukan dalam panggilan balik Anda. Pada setiap iterasi, panggilan balik Anda memiliki akses ke nilai sebelumnya, yang merupakan nilai total sejauh ini, atau akumulasi; Mari kita kembali ke contoh tugas kita. Kami telah memperoleh daftar nama tugas dari var tasks = [43, dan daftar tugas yang difilter yang membutuhkan waktu lama. baik, var tasks = [_44 Bagaimana jika kita ingin mengetahui jumlah total waktu yang kita habiskan untuk bekerja hari ini? Menggunakan iterasi var tasks = [_56, Anda akan menulis 1________13______86 2 54 317_______9 4 // Durations are in minutes
925 // Durations are in minutes
946 // Durations are in minutes
967 56 Dengan var tasks = [_45, itu menjadi 1 200 2 202 3 204 4 5 207 6 209 Mudah Cukup banyak yang ada untuk itu. Hampir, karena JavaScript memberi kita metode yang kurang dikenal, disebut 440. Pada contoh di atas, var tasks = [_45 dimulai dari item pertama dalam larik, iterasi dari kiri ke kanan 1 211 2 213 3 215 4 {
45 6 220 440 melakukan hal yang sama, tetapi berlawanan arah 1 222 2 224 3 226 4 56 5 6 231 Saya menggunakan var tasks = [_45 setiap hari, tetapi saya tidak pernah membutuhkan 440. Saya kira Anda mungkin juga tidak. Tetapi jika Anda pernah melakukannya, sekarang Anda tahu itu ada Kena kauTiga gotcha besar dengan var tasks = [_45 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 sedikit aneh. Jika var tasks = [45 hanya akan mengembalikan satu nilai, mengapa Anda mengharapkan sebuah array? Ada beberapa alasan bagus untuk itu. Pertama, var tasks = [45 selalu mengembalikan satu nilai, tidak selalu satu angka. Jika Anda mengurangi larik demi larik, misalnya, ia akan mengembalikan satu larik. Jika Anda menggunakan larik khusus atau yang dikurangi, akan adil untuk berharap bahwa larik yang berisi satu item tidak akan menjadi kasus khusus Kedua, jika var tasks = [_45 mengembalikan array nilai tunggal, secara alami akan cocok dengan var tasks = [43 dan var tasks = [44, dan fungsi lain pada array yang mungkin Anda gunakan dengannya PenerapanSaatnya untuk melihat terakhir kita di pangkalan. Seperti biasa, Mozilla memiliki polyfill antipeluru untuk dikurangi jika Anda ingin memeriksanya 1 233 2____14_______35 3 54 4 2_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ E jelas Dua hal yang perlu diperhatikan di sini
Gunakan mereka bersama-sama. Memetakan, Memfilter, Mengurangi, dan Kemampuan BerantaiPada titik ini, Anda mungkin tidak terlalu terkesan Cukup adil. var tasks = [43, var tasks = [44, dan var tasks = [45, dengan sendirinya, tidak terlalu menarik Bagaimanapun, kekuatan sejati mereka terletak pada keterhubungan mereka Katakanlah saya ingin melakukan hal berikut
Pertama, mari kita tentukan tugas kita untuk hari Senin dan Selasa 1 251 2 253 3 255 4 257 5 259 6 253 7 263 // Durations are in minutes
1265 // Durations are in minutes
2// Durations are in minutes
41// Durations are in minutes
4269 // Durations are in minutes
5// Durations are in minutes
7272 // Durations are in minutes
8253 20 276 21 278 23 259 24 253 26 284 27 257 29 259 30 253 32 292 33 294 35 // Durations are in minutes
4136 269 38 54 39 302 Dan sekarang, transformasi indah kita 1 304 2 306 3 308 4 310 5 312 6 314 7 316 // Durations are in minutes
1318 // Durations are in minutes
2320 // Durations are in minutes
4322 // Durations are in minutes
5324 // Durations are in minutes
7326 // Durations are in minutes
8328 20 330 21 332 Atau, lebih sederhana 1 334 2 336 3 338 4 340 5 342 6 344 7 346 // Durations are in minutes
1348 // Durations are in minutes
2350 // Durations are in minutes
4352 // Durations are in minutes
5354 // Durations are in minutes
7356 // Durations are in minutes
8358 20 360 Jika Anda sudah sampai sejauh ini, ini seharusnya cukup mudah. Ada dua keanehan kecil yang bisa dijelaskan Pertama, pada baris 10, saya harus menulis 1 362 2 364 3 366 4 368 Ada dua hal yang perlu diklarifikasi di sini
Bagian kedua yang mungkin membuat Anda sedikit tidak nyaman adalah var tasks = [45 terakhir, yaitu 1 362 2 372 3 374 4 376 5 378 6 {
4Itu memanggil var tasks = [_43 untuk mengembalikan array yang berisi nilai tunggal. Di sini, kami memanggil var tasks = [_45 untuk mengeluarkan nilai itu Cara lain untuk melakukan ini adalah dengan menghapus panggilan untuk mengurangi, dan mengindeks ke dalam array yang mengeluarkan var tasks = [43 1 382 2 384 3 386 4 388 5 390 6 392 7 394 // Durations are in minutes
1396 // Durations are in minutes
2398 // Durations are in minutes
4var tasks = [00 // Durations are in minutes
5var tasks = [02 // Durations are in minutes
7var tasks = [04 // Durations are in minutes
8var tasks = [06 itu sangat benar. Jika Anda lebih nyaman menggunakan indeks array, lanjutkan Tapi saya mendorong Anda untuk tidak melakukannya. Salah satu cara paling ampuh untuk menggunakan fungsi ini adalah di ranah pemrograman reaktif, di mana Anda tidak akan bebas menggunakan indeks array. Menendang kebiasaan itu sekarang akan membuat teknik pembelajaran reaktif jauh lebih mudah secara keseluruhan Akhirnya, mari kita lihat bagaimana iterasi teman kita var tasks = [56 akan menyelesaikannya 1 var tasks = [08 2 var tasks = [10 3 var tasks = [12 4 var tasks = [14 5 var tasks = [16 6 7 var tasks = [19 // Durations are in minutes
1var tasks = [21 // Durations are in minutes
254 // Durations are in minutes
4var tasks = [25 // Durations are in minutes
5var tasks = [27 // Durations are in minutes
7var tasks = [29 // Durations are in minutes
856 20 21 var tasks = [34 23 var tasks = [36 24 56 26 27 29 var tasks = [42 Ditoleransi, tapi ramai Kesimpulan & Langkah SelanjutnyaDalam tutorial ini, Anda telah mempelajari cara kerja var tasks = [_43, var tasks = [44, dan var tasks = [45; . Anda telah melihat bahwa mereka semua memungkinkan Anda untuk menghindari kondisi mutasi, yang membutuhkan penggunaan iterasi var tasks = [46 dan 476, dan Anda sekarang harus memiliki ide bagus tentang bagaimana menggabungkan semuanya Sekarang, saya yakin Anda ingin berlatih dan membaca lebih lanjut. Berikut adalah tiga saran teratas saya untuk ke mana harus pergi selanjutnya
JavaScript telah menjadi salah satu bahasa de-facto yang berfungsi di web. Bukan tanpa kurva belajar, dan ada banyak kerangka kerja dan perpustakaan untuk membuat Anda sibuk juga. Jika Anda mencari sumber daya tambahan untuk dipelajari atau digunakan dalam pekerjaan Anda, lihat apa yang kami miliki di pasar Envato Jika Anda menginginkan lebih banyak tentang hal semacam ini, periksa profil saya dari waktu ke waktu; . //kotoran. Aku Pertanyaan, komentar, atau kebingungan? |