Ecmascript5 กำหนดวิธีการผสานสองวิธีสำหรับอาร์เรย์: ลด () และ reduceright () ทั้งสองวิธีทำซ้ำรายการโดยพลการของอาร์เรย์จากนั้นสร้างค่าที่ส่งคืนสุดท้าย วิธีการลด () เริ่มต้นจากรายการแรกของอาร์เรย์และวนซ้ำผ่านจุดสิ้นสุดของอาร์เรย์หนึ่งทีละหนึ่ง วิธีการ REDUCERIGHT () เป็นสิ่งที่ตรงกันข้าม มันเริ่มต้นจากรายการสุดท้ายของอาร์เรย์และไปข้างหน้าไปยังรายการแรก
ทั้งสองวิธีได้รับพารามิเตอร์สองตัว: ฟังก์ชั่นที่เรียกว่าในแต่ละรายการและค่าเริ่มต้นเป็นพื้นฐานสำหรับการผสาน ฟังก์ชั่นที่ส่งผ่านเพื่อลด () และ REDUCERIGHT () ได้รับ 4 พารามิเตอร์: ค่าก่อนหน้าค่าปัจจุบันดัชนีของรายการและวัตถุอาร์เรย์ ค่าใด ๆ ที่ส่งคืนโดยฟังก์ชั่นนี้จะถูกส่งผ่านไปยังรายการถัดไปโดยอัตโนมัติเป็นพารามิเตอร์แรก การทำซ้ำครั้งแรกเกิดขึ้นในเทอมที่สองของอาร์เรย์ดังนั้นพารามิเตอร์แรกคือเทอมแรกของอาร์เรย์และพารามิเตอร์ที่สองเป็นเทอมที่สองของอาร์เรย์
ตัวอย่างเช่นเราสามารถใช้วิธีการลด () เพื่อค้นหาผลรวมของค่าทั้งหมดในอาร์เรย์
var nums = [1,2,3,4,5]; var sum = nums.reduce (ฟังก์ชั่น (ก่อนหน้า, cur, ดัชนี, อาร์เรย์) {retrun pre + cur;});ในรหัสข้างต้นครั้งแรกที่ฟังก์ชั่นการโทรกลับถูกเรียกใช้งานก่อนหน้านี้คือ 1 และ CUR คือ 2 ครั้งที่สองก่อนหน้านี้คือ 3 และ CUR คือ 3 วิธีการลด () จะทำซ้ำกระบวนการนี้จนกว่าแต่ละรายการในอาร์เรย์จะเข้าถึงได้หนึ่งครั้ง
วิธีการ REDUCERIGHT () นั้นคล้ายกับด้านซ้ายและขวา แต่จะถูกดำเนินการในสิ่งที่ตรงกันข้าม ตัวอย่างเช่น:
var nums = [1,2,3,4,5]; var sum = nums.reduceright (ฟังก์ชั่น (ก่อนหน้า, cur, ดัชนี, อาร์เรย์) {retrun pre + cur;});ในตัวอย่างนี้ครั้งแรกที่ฟังก์ชั่นการโทรกลับถูกดำเนินการก่อนหน้านี้คือ 5 และ CUR คือ 4 ผลรวมสุดท้ายจะเหมือนกับวิธีการลด () ทั้ง 15
เบราว์เซอร์ที่รองรับลด () และ REDUCERIGHT () คือ: IE9+, Firefox3+, Safari4+, OperA10.5+และ Chrome
เติมเต็ม
Ecmascript5 ยังเพิ่ม 2 วิธีใหม่ในการรวมอาร์เรย์: ลด () และ reduceright ()
ทั้งสองสิ่งนี้วนซ้ำทุกรายการในอาร์เรย์
ลด (): ย้ำทีละคนจากรายการแรกไปยังจุดสิ้นสุด
REDUCERIGHT (): เริ่มต้นจากรายการสุดท้ายของอาร์เรย์ซ้ำไปยังรายการแรกของอาร์เรย์
ทั้งสองวิธียอมรับพารามิเตอร์สองตัว: ฟังก์ชั่นที่เรียกในแต่ละรายการ (พารามิเตอร์คือ: ค่าก่อนหน้าค่าปัจจุบันดัชนีของรายการอาร์เรย์วัตถุ)
ค่าใด ๆ ที่ส่งคืนโดยฟังก์ชั่นนี้จะถูกส่งผ่านไปยังรายการถัดไปโดยอัตโนมัติเป็นพารามิเตอร์แรก การทำซ้ำครั้งแรกเกิดขึ้นในรายการที่สองของอาร์เรย์
ดังนั้นพารามิเตอร์แรกคือรายการแรกของอาร์เรย์และพารามิเตอร์ที่สองเป็นรายการที่สองของอาร์เรย์
และเป็นค่าเริ่มต้นของฐานผสาน
ใช้วิธีการลด () เพื่อดำเนินการผลรวมของค่าทั้งหมดในอาร์เรย์เช่น:
ค่า var = [1, 2, 3, 4, 5]; var sum = value.Reduce (ฟังก์ชัน (ก่อนหน้า, cur, ดัชนี, อาร์เรย์) {return prev + cur;}); การแจ้งเตือน (ผลรวม); // ผลลัพธ์เหมือนกัน แต่ทิศทางคือ var sum2 = values. reduceright (ฟังก์ชั่น (ก่อนหน้า, cur, ดัชนี, อาร์เรย์) {return prev+cur;}); การแจ้งเตือน (sum2);Merge Sort เป็นอัลกอริทึมการเรียงลำดับที่มีประสิทธิภาพตามการดำเนินการผสาน อัลกอริทึมนี้เป็นแอปพลิเคชันทั่วไปของการแบ่งแยกและพิชิต
วิธีการเรียงลำดับการรวมคือการรวมตารางที่สั่งซื้อสอง (หรือมากกว่าสอง) ไว้ในตารางที่สั่งซื้อใหม่นั่นคือแบ่งลำดับที่จะจัดเรียงเป็นหลายภาคต่อแต่ละลำดับจะถูกสั่งซื้อ จากนั้นการเรียงลำดับที่สั่งซื้อจะถูกรวมเข้ากับลำดับที่สั่งโดยรวม
การเรียงลำดับการผสานเป็นอัลกอริทึมการเรียงลำดับที่มีประสิทธิภาพตามการดำเนินการผสาน อัลกอริทึมนี้เป็นแอปพลิเคชันทั่วไปของการแบ่งแยกและพิชิต ผสานลำดับที่สั่งเพื่อให้ได้ลำดับที่ได้รับคำสั่งอย่างสมบูรณ์; นั่นคือทำให้แต่ละลำดับลำดับก่อนจากนั้นทำตามลำดับส่วนที่ตามมา หากสองตารางที่สั่งซื้อถูกรวมเข้ากับตารางที่สั่งซื้อหนึ่งตารางจะเรียกว่าการผสานแบบ 2 ทาง