Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

รวมค่า Value ของ Key เดียวกันในอาร์เรย์ Object - JavaScript

จากอาร์เรย์ของ 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 ได้สะดวก