Kata pengantar
Masalah yang ditemui dalam wawancara: fungsi JS Array Sum. Hal pertama yang saya pikirkan adalah array loop. Namun, saya pikir pewawancara mengajukan pertanyaan ini untuk tidak mengambil metode terkenal. Pada saat itu, saya sangat pintar sehingga saya memikirkan fungsi rekursif terus -menerus menambahkan item ke array, tetapi saya tidak dapat menyesuaikan metode setelah waktu yang lama. Ternyata ini bukan solusi yang optimal. Akhirnya, pewawancara bertanya kepada saya apakah saya telah melihat reduce() sebelumnya, tetapi sebenarnya tidak. Jadi ketika saya mencari informasi, Array.reduce() adalah atribut baru yang ditambahkan ke ES5, dan yang serupa adalah Array.reduceRight()。
Mari kita rangkum metode menjumlahkan array di bawah ini.
Cara paling kasar: akuisisi loop
Tambahkan satu per satu melalui loop untuk. Lihat kodenya:
Array.prototype.sum = function () {var result = 0; untuk (var i = 0; i <this.length; i ++) {result+= this [i]; } hasil pengembalian;}; [1,4,7,2,10] .sum (); // 24Gunakan metode pengurangan
Menggunakan metode reduce , Anda dapat menulis metode sum untuk menjumlahkan array.
Metode reduce() menerima fungsi sebagai akumulator, dan setiap nilai dalam array (dari kiri ke kanan) mulai menyusut dan akhirnya menjadi nilai.
Sintaks Pengurangan:
array.reduce (callback [, initialValue]);
Fungsi callback menerima 4 parameter: previousValue (nilai yang dikembalikan oleh panggilan balik terakhir), currentValue (elemen saat ini sedang diproses), index (indeks), dan array itu sendiri (parameter pertama callback dipanggil untuk pertama kalinya), dan menjalankan fungsi untuk setiap nilai dalam array.
Parameter initialValue adalah opsional, menunjukkan nilai awal; Jika parameter initialValue ditentukan, itu dianggap sebagai nilai previous yang awalnya digunakan. Jika default, elemen pertama dari array digunakan sebagai nilai awal previous , dan current adalah satu tempat di belakang.
Array.prototype.sum = function () {return this.reduce (function (parsial, value) {return parsial + value;})}; [1,4,7,2,10] .sum (); // 24 Dibandingkan dengan metode pertama, menggunakan metode reduce() lebih efisien.
Perbandingan efisiensi dari kedua metode ini dapat secara langsung memanggil new Date() sebelum dan sesudah fungsi dijalankan untuk mendapatkan waktu waktu nyata, sehingga membandingkan waktu eksekusi melalui perbedaan waktu. Saya tidak akan membandingkannya di sini karena lingkungan eksekusi semua orang sangat bervariasi. Hasil tes adalah bahwa waktu eksekusi metode reduce() lebih pendek.
JS Array Sum Function dan temukan nilai maksimum dalam array
Kode contoh
<! Doctype html public "-// w3c // dtd xhtml 1.0 transisi // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html xmlns = "http://www.w3.org/1999/xhtml"> <adept> <meta http-equiv = "content-type" content = "text/html; charset = gb2312" /> <title> "sumlin/html; kidal" sumsar "/> <title>" sumsar/html <nets "sumsar" sumsar "/> <title> whet_net_js SIVERS ARREIN" SUMPREX. Content = "Webmaster, Efek Khusus Halaman Web, Kode Efek Khusus Halaman Web, Efek Khusus JS, skrip JS, skrip, kode iklan, vevb.com, www.vevb.com, wulin.com" /> <meta name = "deskripsi" Kode Khusus Www.vevb.com, wulin, nomor Wulin. Unduhan Kode, semuanya di wulin.com "/> </head> <body> <a href =" // www.vevb.com/">wulin.com </a>, webmaster harus memiliki efek khusus halaman web dan kode iklan berkualitas tinggi. VEVB.com, Efek Khusus Webmaster JS. <hr> <script type = "text/javascript"> // sum array.prototype.sum = function () {for (var sum = i = 0; i <this.length; i ++) jumlah+= parseInt (this [i]); kembalikan jumlah;}; // Cari nilai maksimum array.prototype.maxima = function () {for (var i = 0, maxvalue = number.min_value; i <this.length; i ++) parseInt (this [i])> maxValue && (maxvalue = this [i]); return maxValue;}; // Terapkan var arr = [1,21,3,4,22,45,60,7,32]; waspada (arr.join (" +") + "=" + arr.sum ()); alert (arr.join ("|") + ", angka terbesar adalah:" + arr.maxima ()); </script> </body> </html>Di atas adalah semua konten artikel ini. Saya harap ini akan membantu semua orang JavaScript. Jika Anda memiliki pertanyaan, silakan tinggalkan pesan dan diskusikan. Editor akan membalas semua orang tepat waktu.