สมมติว่าเรามีอาร์เรย์ของอ็อบเจกต์ดังนี้:
const arr = [{a: 2, b: 5, c: 6}, {a:3, b: 4, d:1},{a: 1, d: 2}];แต่ละอ็อบเจกต์มี key ที่ไม่ซ้ำกันภายในตัวมันเอง แต่อ็อบเจกต์ต่างกันอาจมี key ร่วมกัน
เราต้องเขียนฟังก์ชันที่รับอาร์เรย์แบบนี้และคืนค่าอ็อบเจกต์ที่มี key ทั้งหมดที่ไม่ซ้ำกันในอาร์เรย์ พร้อมค่าเป็นผลรวมสะสม
ดังนั้น อ็อบเจกต์ผลลัพธ์ควรเป็น:
const output = {a: 6, b: 9, c: 6, d: 3};ตัวอย่าง
โค้ดต่อไปนี้เป็นตัวอย่าง:
const arr = [{a: 2, b: 5, c: 6}, {a: 3, b: 4, d:1}, {a: 1, d: 2}];
const sumArray = arr => {
const res = {};
for(let i = 0; i < arr.length; i++){
Object.keys(arr[i]).forEach(key => {
res[key] = (res[key] || 0) + arr[i][key];
});
};
return res;
};
console.log(sumArray(arr));ผลลัพธ์
จะแสดงผลในคอนโซลดังนี้:
{ a: 6, b: 9, c: 6, d: 3 }