จากอาร์เรย์ของ Objects รวมค่าของ Key ที่เหมือนกัน (Sum by Key)
ตัวอย่าง
[{a:2,b:5,c:6}, {a:3,b:4,d:1}, {a:1,d:2}]
→ {a:6, b:9, c:6, d:3}
ตัวอย่างโค้ด
const sumArray = arr => {
const res = {};
for (const obj of arr) {
for (const [key, val] of Object.entries(obj)) {
res[key] = (res[key] || 0) + val;
}
}
return res;
};
console.log(sumArray([{a:2,b:5,c:6}, {a:3,b:4,d:1}, {a:1,d:2}]));
ผลลัพธ์
{ a: 6, b: 9, c: 6, d: 3 }
วิธีแบบ Reduce (Functional)
const sumArray = arr =>
arr.reduce((acc, obj) => {
for (const [k, v] of Object.entries(obj)) {
acc[k] = (acc[k] || 0) + v;
}
return acc;
}, {});
ใช้ Object.entries() วนลูป Key-Value Pair ได้สะดวก