วิธี reduce
เมธอด reduce รวบอาร์เรย์ลงเป็น
ค่าเดียว (reduce) ตัวอย่างเช่น
การใช้เมธอดนี้ทำให้สามารถหาผลรวมของ
องค์ประกอบอาร์เรย์ได้ง่าย (กล่าวคืออาร์เรย์จะถูกรวบ
เป็นค่าเดียว - เป็นผลรวมขององค์ประกอบ)
พารามิเตอร์แรกเมธอด reduce รับ
ฟังก์ชัน ซึ่งจะทำงานตามลำดับ
สำหรับแต่ละองค์ประกอบของอาร์เรย์ เริ่มจากองค์ประกอบแรก
ในฟังก์ชันนี้สามารถส่ง 4 พารามิเตอร์ได้
หากมีพารามิเตอร์เหล่านี้ (ไม่บังคับ)
จะได้ ผลลัพธ์ชั่วคราว อัตโนมัติในพารามิเตอร์แรก
ได้องค์ประกอบอาร์เรย์ในพารามิเตอร์ที่สอง ได้หมายเลข
ในอาร์เรย์ (ดัชนี) ในพารามิเตอร์ที่สาม
และได้ตัวอาร์เรย์เองในพารามิเตอร์ที่สี่
ผลลัพธ์ชั่วคราว คือ ตัวแปร
ที่จะสะสมค่าที่
เมธอด reduce จะคืนค่า เมื่อ
วนผ่านองค์ประกอบทั้งหมดของอาร์เรย์แล้ว ตัวอย่างเช่น
สามารถสะสมผลรวมของ
องค์ประกอบอาร์เรย์ตามลำดับได้: ใส่องค์ประกอบแรกก่อน
ในการวนรอบต่อไปก็จะได้
ผลรวมขององค์ประกอบแรกและองค์ประกอบที่สอง ในการวนรอบต่อไป
- ผลรวมขององค์ประกอบแรก ที่สอง และที่สาม
และทำเช่นนี้ไปจนกว่าอาร์เรย์จะหมด
ฟังก์ชันที่ reduce รับเข้า
ต้องคืนค่าใหม่ของผลลัพธ์ชั่วคราว
พารามิเตอร์ที่สองของเมธอด reduce ระบุ
ค่าเริ่มต้นของผลลัพธ์ชั่วคราว
หากไม่ระบุ ค่าจะเท่ากับองค์ประกอบแรก
ของอาร์เรย์ และการประมวลผลองค์ประกอบจะเริ่ม
จากองค์ประกอบที่สอง
ไวยากรณ์
อาร์เรย์.reduce(function(ผลลัพธ์ชั่วคราว, องค์ประกอบ, ดัชนี, อาร์เรย์) {
return ผลลัพธ์ชั่วคราวใหม่;
}, ค่าเริ่มต้น);
ตัวอย่าง
หาผลรวมขององค์ประกอบอาร์เรย์:
let arr = [1, 2, 3, 4, 5, 6];
let res = arr.reduce(function(sum, elem) {
return sum + elem;
}, 0);
console.log(res);
ผลลัพธ์การทำงานของโค้ด:
21
ตัวอย่าง
มาหาผลรวมของ จำนวนบวกทั้งหมดในอาร์เรย์กัน:
let arr = [1, -2, -3, 4, 5, -6];
let res = arr.reduce(function(sum, elem) {
if (elem >= 0) {
return sum + elem;
} else {
return sum;
}
}, 0);
console.log(res);
ผลลัพธ์การทำงานของโค้ด:
10