ภาพรวม
สมมติว่าเรามีอ็อบเจ็กต์สองอ็อบเจ็กต์:
const obj1 = { a:12, b:8, c:17 };
const obj2 = { a:2, b:4, c:1 };
เราต้องเขียนฟังก์ชันที่รับอ็อบเจ็กต์สองอ็อบเจ็กต์ (หรือมากกว่านั้น) และบวกค่าของคุณสมบัติที่เหมือนกันรวมเป็นคุณสมบัติเดียว
ผลลัพธ์ที่คาดหวัง
const output = { a:14, b:12, c:18 };
ตัวอย่างโค้ด
const obj1 = { a:12, b:8, c:17 };
const obj2 = { a:2, b:4, c:1 };
const sumObjectsByKey = (...objs) => {
const res = objs.reduce((a, b) => {
for (let k in b) {
if (b.hasOwnProperty(k))
a[k] = (a[k] || 0) + b[k];
}
return a;
}, {});
return res;
};
console.log(sumObjectsByKey(obj1, obj2));
ผลลัพธ์ในคอนโซล
{ a: 14, b: 12, c: 18 }