คำนำ
ปัญหาที่พบในการสัมภาษณ์: ฟังก์ชั่นผลรวม JS Array สิ่งแรกที่ฉันคิดว่าคือ Array Loops อย่างไรก็ตามฉันคิดว่าผู้สัมภาษณ์ถามคำถามนี้ว่าจะไม่ใช้วิธีการที่รู้จักกันดี ในเวลานั้นฉันฉลาดมากจนฉันนึกถึงฟังก์ชั่นการเรียกซ้ำเพิ่มรายการลงในอาร์เรย์อย่างต่อเนื่อง แต่ฉันไม่สามารถปรับวิธีนี้ได้หลังจากผ่านไปนาน มันกลับกลายเป็นว่านี่ไม่ใช่ทางออกที่ดีที่สุด ในที่สุดผู้สัมภาษณ์ถามฉันว่าฉันเคยเห็น reduce() มาก่อน แต่มันก็ไม่จริง ดังนั้นเมื่อฉันค้นหาข้อมูล Array.reduce() เป็นแอตทริบิวต์ใหม่ที่เพิ่มเข้ามาใน ES5 และรายการที่คล้ายกันคือ Array.reduceRight()。
มาสรุปวิธีการรวมอาร์เรย์ด้านล่าง
วิธีที่หยาบที่สุด: การเข้าซื้อกิจการแบบวนซ้ำ
เพิ่มทีละหนึ่งผ่านสำหรับลูป ดูรหัส:
array.prototype.sum = function () {var result = 0; สำหรับ (var i = 0; i <this.length; i ++) {result+= this [i]; } ผลตอบแทนผลลัพธ์;}; [1,4,7,2,10] .sum (); // 24ใช้วิธีลด
การใช้วิธี reduce คุณสามารถเขียนวิธีการ sum สำหรับการรวมอาร์เรย์
วิธี reduce() ได้รับฟังก์ชั่นเป็นตัวสะสมและแต่ละค่าในอาร์เรย์ (จากซ้ายไปขวา) เริ่มหดตัวและจบลงด้วยค่า
ไวยากรณ์ของการลด:
array.reduce (การโทรกลับ [, initialValue]);
ฟังก์ชั่น callback ยอมรับพารามิเตอร์ 4 พารามิเตอร์: previousValue (ค่าที่ส่งคืนโดยการเรียกกลับครั้งล่าสุด), currentValue (องค์ประกอบปัจจุบันที่ถูกประมวลผล), index (ดัชนี) และอาร์เรย์เอง (พารามิเตอร์แรกของ callback ถูกเรียกเป็นครั้งแรก) และดำเนินการฟังก์ชันสำหรับแต่ละค่าในอาร์เรย์
พารามิเตอร์ initialValue เป็นทางเลือกระบุค่าเริ่มต้น; หากมีการระบุพารามิเตอร์ initialValue จะถือว่าเป็นค่า previous หน้านี้ หากค่าเริ่มต้นองค์ประกอบแรกของอาร์เรย์จะใช้เป็นค่าเริ่มต้น previous และ current คือหนึ่งที่ด้านหลัง
array.prototype.sum = function () {return this.reduce (ฟังก์ชัน (บางส่วน, ค่า) {ส่งคืนบางส่วน + value;})}; [1,4,7,2,10] .sum (); // 24 เมื่อเทียบกับวิธีแรกการใช้วิธี reduce() มีประสิทธิภาพมากกว่า
การเปรียบเทียบประสิทธิภาพของสองวิธีนี้สามารถเรียก new Date() ก่อนและหลังฟังก์ชั่นจะทำงานเพื่อให้ได้เวลาเรียลไทม์ดังนั้นเปรียบเทียบเวลาการดำเนินการผ่านความแตกต่างของเวลา ฉันจะไม่เปรียบเทียบที่นี่เพราะสภาพแวดล้อมการดำเนินการของทุกคนแตกต่างกันอย่างมาก ผลการทดสอบคือเวลาดำเนินการของวิธี reduce() สั้นลง
ฟังก์ชั่น JS Array Sum และค้นหาค่าสูงสุดในอาร์เรย์
รหัสตัวอย่าง
<! doctype html public "-// w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> xmlns = "http://www.w3.org/1999/xhtml"> <head> <meta http-equiv = "เนื้อหาประเภท" เนื้อหา = "ข้อความ/html; charset = gb2312" /> name = "คำหลัก" content = "เว็บมาสเตอร์, หน้าเว็บเอฟเฟกต์พิเศษ, เว็บเพจรหัสเอฟเฟกต์พิเศษ, เอฟเฟกต์พิเศษ JS, สคริปต์ JS, สคริปต์, รหัสโฆษณา, vevb.com, www.vevb.com, wulin.com" /> <meta name = "คำอธิบาย" เอฟเฟกต์การให้การดาวน์โหลดรหัสโฆษณาคุณภาพสูงทั้งหมดบน wulin.com "/> </head> <body> <a href =" // www.vevb.com/"> wulin.com </a> เว็บมาสเตอร์ต้องมีหน้าเว็บพิเศษและรหัสโฆษณาพิเศษ Vevb.com, เว็บมาสเตอร์ JS เอฟเฟกต์พิเศษ <hr> <script type = "text/javascript"> // sum array.prototype.sum = function () {สำหรับ (var sum = i = 0; i <this.length; i ++) sum+= parseint (นี่ [i]); ส่งคืนผลรวม;}; // การค้นหาค่าสูงสุด array.prototype.maxima = function () {สำหรับ (var i = 0, maxValue = number.min_value; i <this.length; i ++) parseint (นี่ [i])> maxvalue && ส่งคืน maxvalue;}; // ใช้ var arr = [1,21,3,4,22,45,60,7,32]; แจ้งเตือน (arr.join (" +") + "=" + arr.sum ()); การแจ้งเตือน (arr.join ("|") + "จำนวนที่ใหญ่ที่สุดคือ:" + arr.maxima ()); </script> </body> </html>ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์กับการใช้ JavaScript ของทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความและพูดคุย บรรณาธิการจะตอบกลับทุกคนในเวลา