mata teras
- JavaScript Native
- dan
Array
kaedahmap()
objek adalah alat pengaturcaraan berfungsi yang kuat yang menjadikan kod lebih ringkas, mudah dibaca dan mudah dikekalkan.reduce()
- adalah teknik pengaturcaraan fungsional asas yang bertindak pada semua elemen dalam array dan menghasilkan pelbagai lagi panjang yang sama yang mengandungi kandungan yang ditukar. Dengan menambahkan fungsi pemetaan ke objek array, ECMAScript 5 mengubah jenis array asas menjadi functor lengkap, menjadikan pengaturcaraan berfungsi lebih mudah digunakan.
map()
Kaedah - (juga kaedah baru dalam ECMAScript 5) adalah serupa dengan
reduce()
, tetapi bukannya menghasilkan functor lain, ia menghasilkan satu hasil, yang boleh menjadi jenis apa pun. Ia menggunakan fungsi untuk setiap elemen array supaya array dikurangkan kepada satu nilai output.map()
Walaupun kaedah - dan
map()
boleh menjejaskan prestasi, penambahbaikan kualiti kod dan kepuasan pemaju hari ini dengan menggunakannya mungkin melebihi kesan sementara terhadap prestasi. Penulis mengesyorkan menggunakan teknik fungsional untuk pembangunan dan mengukur kesan dalam situasi dunia nyata sebelum memutuskan sama adareduce()
danmap()
sesuai untuk aplikasi tertentu.reduce()
dan Array
asli berdasarkan objek JavaScript map()
. reduce()
dan map()
lagi, maka mulakan sekarang! Platform JavaScript yang paling moden menyokong ECMAScript 5 secara asli. Pemetaan dan peraturan boleh menjadikan kod anda lebih ringkas, lebih mudah dibaca dan diselenggarakan, dan membimbing anda ke arah perkembangan fungsi yang lebih elegan. reduce()
Prestasi: Langkah berjaga -jaga
Sudah tentu, apabila diperlukan, bacaan dan penyelenggaraan kod mesti seimbang dengan prestasi. Pada masa ini, pelayar lebih cekap menggunakan teknik tradisional yang lebih rumit seperti gelung. for
Ia juga patut dipertimbangkan bahawa sebagai pelayar mengoptimumkan
dan map()
, menggunakan kaedah ini boleh memanfaatkan penambahbaikan dalam enjin JavaScript. Kecuali saya menghadapi masalah prestasi, saya lebih suka menulis kod secara optimis dan meletakkan tweak prestasi yang menjadikan kod saya kurang menarik dalam poket sandaran saya sekiranya saya memerlukannya. reduce()
Gunakan peta
Pemetaan adalah teknik pengaturcaraan fungsional asas yang bertindak pada semua elemen dalam array dan menghasilkan pelbagai lagi panjang yang sama (termasuk kandungan yang ditukar).
Untuk menjadi lebih spesifik, mari kita tentukan kes penggunaan mudah. Sebagai contoh, katakan anda mempunyai pelbagai perkataan yang anda perlukan untuk menukar ke dalam array yang mengandungi setiap panjang perkataan. (Saya tahu, ini bukan jenis sains roket yang kompleks yang biasanya anda perlukan untuk melaksanakan aplikasi yang kompleks, tetapi memahami bagaimana ia berfungsi dalam kes mudah ini akan membantu anda menambah nilai sebenar kepada kod anda memohon dalam kes).
Anda mungkin sudah tahu cara menggunakan gelung for
pada array untuk melakukan apa yang saya nyatakan. Ia mungkin kelihatan seperti ini:
var animals = ["cat","dog","fish"]; var lengths = []; var item; var count; var loops = animals.length; for (count = 0; count < loops; count++) { item = animals[count]; lengths.push(item.length); } console.log(lengths); //[3, 3, 4]
semua yang kita lakukan adalah menentukan beberapa pembolehubah: array yang dipanggil animals
yang mengandungi kata -kata kita; Simpan setiap item yang akan kami beroperasi dalam setiap gelung array. Kami mengoptimumkan gelung lengths
kami dengan pembolehubah kaunter dalaman sementara dan pembolehubah item
. Kami kemudian melangkah ke atas setiap item sehingga panjang for
. Untuk setiap item, kami mengira panjangnya dan menolaknya ke dalam array loops
. for
animals
lengths
NOTA: Kita boleh mengatakan bahawa kita boleh melakukan ini lebih ringkas dengan terus menolak panjang
tanpa tugasan perantaraan. Ini akan menyelamatkan kita beberapa kod, tetapi juga akan menjadikan kod itu kurang dibaca, walaupun untuk contoh yang sangat mudah ini. Sekali lagi, untuk menjadikannya lebih cekap, tetapi kurang mudah, kita boleh memulakan array kami ke animals[count]
menggunakan panjang array lengths
yang diketahui dan kemudian masukkan item dengan indeks dan bukannya menggunakan animals
. Ia semua bergantung pada bagaimana anda akan menggunakan kod di dunia nyata. lengths
new Array(animals.length)
push
Kaedah ini tidak mempunyai masalah teknikal. Ia harus berfungsi dalam mana -mana enjin JavaScript standard dan ia akan melakukan tugas itu. Tetapi apabila anda tahu cara menggunakan , ia akan kelihatan canggung untuk berbuat demikian.
izinkan saya menunjukkan kepada anda bagaimana kami menggunakan map()
untuk menangani perkara ini:
map()
Dalam kes ini, kita mulakan dengan pembolehubah array
var animals = ["cat","dog","fish"]; var lengths = animals.map(function(animal) { return animal.length; }); console.log(lengths); //[3, 3, 4], yang kami berikan terus kepada hasil pemetaan fungsi inline tanpa nama kepada setiap elemen array
. Fungsi tanpa nama ini melakukan operasi pada setiap haiwan, mengembalikan panjang. Akibatnya, animals
menjadi array dengan panjang yang sama seperti array lengths
asal, yang mengandungi panjang setiap perkataan. animals
Beberapa mata untuk diperhatikan mengenai kaedah ini. Pertama, ia jauh lebih pendek daripada kaedah asal. Kedua, kita perlu mengisytiharkan lebih sedikit pembolehubah. Pembolehubah yang lebih sedikit, bunyi yang kurang akan ada di ruang nama global, dan jika bahagian lain dari kod yang sama menggunakan pembolehubah dengan nama yang sama, kemungkinan kurang konflik. Selain itu, pembolehubah kami tidak perlu mengubah nilai mereka dari awal hingga akhir. Semasa anda menyelam ke dalam pengaturcaraan berfungsi, anda akan menghargai keupayaan anggun menggunakan pemalar dan pembolehubah yang tidak berubah, dan belum terlambat untuk mula belajar sekarang.
Satu lagi kelebihan pendekatan ini ialah kita mempunyai peluang untuk memperbaiki fleksibiliti dengan memisahkan fungsi bernama, sehingga menghasilkan kod bersih dalam proses. Fungsi inline tanpa nama boleh kelihatan kemas dan membuat kod semula lebih sukar. Kita boleh menentukan fungsi yang dipanggil getLength()
dan menggunakannya dalam konteks dengan cara ini:
var animals = ["cat","dog","fish"]; var lengths = []; var item; var count; var loops = animals.length; for (count = 0; count < loops; count++) { item = animals[count]; lengths.push(item.length); } console.log(lengths); //[3, 3, 4]
Lihat bagaimana bersih ini kelihatan? Hanya mengambil pemetaan sebagai sebahagian daripada toolkit anda boleh mengambil kod anda ke tahap fungsional yang baru.
Apa itu Functor?
Menariknya, dengan menambahkan fungsi pemetaan ke objek array, ECMAScript 5 mengubah jenis array asas menjadi functor lengkap, menjadikan pengaturcaraan berfungsi lebih mudah untuk kita semua gunakan.
Menurut definisi pengaturcaraan fungsional klasik, Functors memenuhi tiga syarat:
- ia mengandungi satu set nilai
- ia melaksanakan fungsi pemetaan yang bertindak pada setiap elemen
- Fungsi pemetaannya mengembalikan kunctor dengan saiz yang sama
Ini adalah topik yang boleh anda bincangkan di mesyuarat JavaScript seterusnya.
Jika anda ingin mengetahui lebih lanjut mengenai Functors, lihat video hebat ini oleh Mattias Petter Johansson.
Gunakan mengurangkan
Kaedah reduce()
juga merupakan kaedah baru dalam ECMAScript 5, yang sama dengan map()
, kecuali ia tidak menjana functor lain, tetapi menghasilkan satu hasil, yang boleh menjadi jenis apa pun. Sebagai contoh, katakan anda ingin mengambil jumlah panjang semua perkataan dalam array animals
sebagai nombor. Anda boleh bermula dengan:
var animals = ["cat","dog","fish"]; var lengths = animals.map(function(animal) { return animal.length; }); console.log(lengths); //[3, 3, 4]
Selepas menentukan array awal, kami membuat pembolehubah total
untuk jumlah yang dijalankan, pada mulanya ditetapkan kepada sifar. Kami juga mencipta pembolehubah item
untuk menyelamatkan setiap lelaran array animals
apabila ia melintasi gelung for
, dan pembolehubah count
untuk kaunter gelung, dan pembolehubah loops
untuk mengoptimumkan lelaran kami. Kemudian, kami menjalankan gelung for
untuk melelehkan semua perkataan dalam array animals
dan menyerahkan setiap perkataan kepada pembolehubah item
. Akhirnya, kami menambah panjang setiap item kepada jumlah kami.
Sekali lagi, pendekatan ini tidak mempunyai masalah teknikal. Kami mulakan dengan array dan akhirnya mendapat hasil. Walau bagaimanapun, menggunakan kaedah reduce()
, kita boleh membuat proses ini lebih langsung:
var animals = ["cat","dog","fish"]; var lengths = []; var item; var count; var loops = animals.length; for (count = 0; count < loops; count++) { item = animals[count]; lengths.push(item.length); } console.log(lengths); //[3, 3, 4]
Apa yang berlaku di sini ialah kita menentukan pembolehubah baru total
dan menyerahkannya kepada hasil mengurangkan array animals
menggunakan dua parameter: fungsi inline tanpa nama dan nilai total nilai awal sifar. Pengurangan akan melintasi setiap item dalam array, laksanakan fungsi pada item itu, dan tambahkannya ke jumlah yang dijalankan ke lelaran seterusnya. Di sini fungsi inline kami mempunyai dua parameter: jumlah yang dijalankan dan kata -kata yang sedang diproses dari array. Fungsi ini menambah nilai semasa total
ke panjang perkataan semasa.
Perhatikan bahawa kami menetapkan parameter kedua reduce()
kepada sifar, yang menunjukkan bahawa total
akan mengandungi nombor. Tanpa parameter kedua, kaedah reduce
masih akan berfungsi, tetapi hasilnya tidak semestinya hasil yang anda harapkan. (Cubalah dan lihat logik apa yang digunakan oleh JavaScript ketika menjalankan jumlahnya ditinggalkan.)
Oleh kerana definisi fungsi inline tanpa nama diintegrasikan apabila memanggil kaedah reduce()
, ini mungkin kelihatan sedikit lebih rumit daripada yang diperlukan. Mari kita lakukan ini lagi, tetapi mari kita mula -mula menentukan fungsi bernama dan bukannya menggunakan fungsi inline tanpa nama:
var animals = ["cat","dog","fish"]; var lengths = animals.map(function(animal) { return animal.length; }); console.log(lengths); //[3, 3, 4]
Ini adalah sedikit lebih lama, tetapi ia tidak selalu menjadi perkara yang buruk untuk berkembang. Melihatnya dengan cara ini harus membuat apa yang berlaku dalam kaedah reduce
sedikit lebih jelas.
reduce()
mempunyai dua parameter: fungsi yang digunakan untuk setiap elemen dalam array, dan nilai awal yang digunakan untuk menjalankan jumlahnya. Dalam kes ini, kami lulus nama fungsi baru bernama addLength
dan nilai awal sifar Jumlah Jumlah. Kami mencipta fungsi addLength()
supaya ia juga menerima dua parameter: jumlah larian dan rentetan yang akan diproses.
Kesimpulan
Membangunkan tabiat menggunakan map()
dan reduce()
secara teratur akan memberikan anda alternatif untuk menjadikan kod anda lebih ringkas, lebih umum, lebih mudah untuk mengekalkan, dan membuka jalan bagi anda untuk menggunakan teknologi JavaScript yang lebih berfungsi dengan cara.
map()
dan reduce()
hanyalah dua kaedah baru yang ditambah kepada ECMAScript 5. Kemungkinan besar, penambahbaikan kualiti kod dan kepuasan pemaju yang anda lihat hari ini akan jauh melebihi kesan sementara terhadap prestasi. Gunakan teknik fungsional untuk membangun dan mengukur kesan di dunia nyata sebelum memutuskan sama ada map()
dan reduce()
sesuai untuk permohonan anda.
Artikel ini dikaji semula oleh Panayiotis Velisarakos, Tim Sevien dan Dan Prince. Terima kasih kepada semua pengulas rakan sebaya untuk mendapatkan kandungan SitePoint dengan sebaik -baiknya!
Soalan-soalan yang sering ditanya mengenai peta-reduce dalam JavaScript berfungsi (FAQ)
Apakah perbezaan antara peta dan mengurangkan JavaScript?
Dalam JavaScript, Peta dan Mengurangkan kedua-dua fungsi pesanan lebih tinggi yang bertindak pada tatasusunan. Fungsi peta digunakan untuk membuat array baru dengan menggunakan fungsi untuk setiap elemen array asal. Ia tidak mengubah suai array asal, tetapi mengembalikan array baru. Sebaliknya, fungsi mengurangkan digunakan untuk memudahkan susunan ke dalam nilai tunggal. Ia menggunakan fungsi untuk setiap elemen array supaya ia dapat dikurangkan kepada satu nilai output.
Bagaimanakah fungsi peta berfungsi dalam JavaScript?
Fungsi peta dalam JavaScript berfungsi dengan membuat array baru dari array yang ada. Ia melakukan ini dengan menggunakan fungsi yang ditentukan untuk setiap elemen dalam array asal. Fungsi ini dipanggil sekali untuk setiap elemen dalam array. Hasilnya adalah array baru yang mengandungi hasil panggilan fungsi.
bagaimana mengurangkan fungsi berfungsi dalam JavaScript?
fungsi mengurangkan dalam JavaScript berfungsi dengan menggunakan fungsi untuk setiap elemen dalam array supaya array dapat dikurangkan kepada satu nilai output. Nilai output adalah hasil kumulatif panggilan fungsi. Fungsi ini menerima dua parameter: penumpuk dan nilai semasa. Nilai pulangan panggilan fungsi terkumpul penumpuk.
Bolehkah saya menggunakan peta dan mengurangkan javascript?
Ya, anda boleh menggunakan peta dan mengurangkan dalam JavaScript. Malah, mereka sering digunakan bersama dalam pengaturcaraan berfungsi. Anda boleh menggunakan fungsi peta untuk menukar setiap elemen dalam array dan kemudian gunakan fungsi mengurangkan untuk menggabungkan elemen yang ditukar ke dalam satu nilai output.
Apakah perbezaan antara Peta dan Foreach dalam JavaScript?
Peta dan Foreach adalah kedua-dua fungsi pesanan lebih tinggi yang bertindak pada tatasusunan dalam JavaScript. Perbezaan utama di antara mereka ialah peta mencipta array baru dengan menggunakan fungsi untuk setiap elemen array asal, sementara Foreach terpakai untuk setiap elemen array untuk mendapatkan kesan sampingannya. Foreach tidak mengembalikan array baru.
Bagaimana saya menukar array dalam javascript menggunakan fungsi peta?
Anda boleh menggunakan fungsi peta dalam JavaScript untuk menukar array dengan menggunakan fungsi ke setiap elemen array. Fungsi ini dipanggil sekali untuk setiap elemen dalam array. Hasilnya adalah array baru yang mengandungi hasil panggilan fungsi.
Bagaimana saya menggunakan fungsi mengurangkan untuk menggabungkan unsur -unsur array dalam javascript?
Anda boleh menggunakan fungsi mengurangkan dalam JavaScript untuk menggabungkan unsur -unsur array ke dalam satu nilai output. Fungsi ini digunakan untuk setiap elemen dalam array, dan nilai output adalah hasil kumulatif panggilan fungsi.
Apakah beberapa kes penggunaan biasa fungsi peta dalam JavaScript?
Fungsi peta dalam JavaScript sering digunakan untuk menukar tatasusunan dengan menggunakan fungsi ke setiap elemen array. Sesetengah kes penggunaan biasa termasuk menukarkan rentetan kepada nombor, mengubah kes rentetan, dan mengekstrak sifat dari objek.
Apakah beberapa kes penggunaan biasa untuk mengurangkan fungsi dalam JavaScript?
Mengurangkan fungsi dalam JavaScript biasanya digunakan untuk menggabungkan unsur -unsur array ke dalam satu nilai output. Sesetengah kes penggunaan biasa termasuk nombor penjumlahan, mencari nilai maksimum atau minimum, dan rentetan yang menggabungkan.
Bagaimana untuk debug peta atau mengurangkan fungsi dalam JavaScript?
Anda boleh debug peta atau mengurangkan fungsi dalam JavaScript dengan menggunakan pernyataan console.log
dalam fungsi untuk memaparkan nilai pembolehubah dan ekspresi. Anda juga boleh menjeda pelaksanaan menggunakan pernyataan debugger
dan periksa nilai pembolehubah dan ekspresi dalam alat pemaju pelayar web.
Atas ialah kandungan terperinci Menggunakan peta dan mengurangkan javascript berfungsi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Java dan JavaScript adalah bahasa pengaturcaraan yang berbeza, masing -masing sesuai untuk senario aplikasi yang berbeza. Java digunakan untuk pembangunan aplikasi perusahaan dan mudah alih yang besar, sementara JavaScript digunakan terutamanya untuk pembangunan laman web.

JavaScriptcommentsareessentialformaintaining,reading,andguidingcodeexecution.1)Single-linecommentsareusedforquickexplanations.2)Multi-linecommentsexplaincomplexlogicorprovidedetaileddocumentation.3)Inlinecommentsclarifyspecificpartsofcode.Bestpractic

Titik berikut harus diperhatikan apabila tarikh pemprosesan dan masa di JavaScript: 1. Terdapat banyak cara untuk membuat objek tarikh. Adalah disyorkan untuk menggunakan rentetan format ISO untuk memastikan keserasian; 2. Dapatkan dan tetapkan maklumat masa boleh diperoleh dan tetapkan kaedah, dan ambil perhatian bahawa bulan bermula dari 0; 3. Tarikh pemformatan secara manual memerlukan rentetan, dan perpustakaan pihak ketiga juga boleh digunakan; 4. Adalah disyorkan untuk menggunakan perpustakaan yang menyokong zon masa, seperti Luxon. Menguasai perkara -perkara utama ini secara berkesan dapat mengelakkan kesilapan yang sama.

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScriptispreferredforwebdevelopment, whersjavaisbetterforlarge-scalebackendsystemsandandroidapps.1) javascriptexcelsinceleatinginteractiveWebexperienceswithitsdynamicnatureanddommanipulation.2) javaoffersstrongyblectionandobjection

JavascripthassevenfundamentalDatypes: nombor, rentetan, boolean, undefined, null, objek, andsymbol.1) numberuseadouble-precisionformat, bergunaforwidevaluangesbutbecautiouswithfloating-pointarithmetic.2)

Penangkapan dan gelembung acara adalah dua peringkat penyebaran acara di Dom. Tangkap adalah dari lapisan atas ke elemen sasaran, dan gelembung adalah dari elemen sasaran ke lapisan atas. 1. Penangkapan acara dilaksanakan dengan menetapkan parameter useCapture addeventlistener kepada benar; 2. Bubble acara adalah tingkah laku lalai, useCapture ditetapkan kepada palsu atau ditinggalkan; 3. Penyebaran acara boleh digunakan untuk mencegah penyebaran acara; 4. Acara menggelegak menyokong delegasi acara untuk meningkatkan kecekapan pemprosesan kandungan dinamik; 5. Penangkapan boleh digunakan untuk memintas peristiwa terlebih dahulu, seperti pemprosesan pembalakan atau ralat. Memahami kedua -dua fasa ini membantu mengawal masa dan bagaimana JavaScript bertindak balas terhadap operasi pengguna.

Java dan JavaScript adalah bahasa pengaturcaraan yang berbeza. 1.Java adalah bahasa yang ditaip dan disusun secara statik, sesuai untuk aplikasi perusahaan dan sistem besar. 2. JavaScript adalah jenis dinamik dan bahasa yang ditafsirkan, terutamanya digunakan untuk interaksi web dan pembangunan front-end.
