Array.reduce()
ลด Array ลงเหลือ ค่าเดียว โดยประมวลผลจาก ซ้ายไปขวา (Left-to-Right) ใช้สำหรับ Sum, Product, Flatten, Grouping, และอื่นๆ
ไวยากรณ์
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
ตัวอย่าง: หาผลรวม
<html> <body> <p>Sum of numbers in array: </p> <script>
const array = [1, 2, 3, 4];
const sum = (acc, curr) => acc + curr;
document.write(array.reduce(sum)); // 10
</script> </body> </html>
ผลลัพธ์
Sum of numbers in array: 10
ตัวอย่างอื่นๆ
Product (คูณทั้งหมด)
[1,2,3,4].reduce((a,b) => a*b, 1); // 24
Flatten Array (1 Level)
[[1,2], [3,4], [5]].reduce((a,b) => a.concat(b), []); // [1,2,3,4,5]
Count Occurrences (นับความถี่)
['a','b','a','c','b','a'].reduce((acc, v) => {
acc[v] = (acc[v] || 0) + 1;
return acc;
}, {}); // {a: 3, b: 2, c: 1}
สำคัญ: Initial Value
ควรส่ง initialValue เสมอ เพื่อป้องกัน Error บน Empty Array และชี้ประเภท Accumulator ชัดเจน