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

JavaScript: ผลรวมของสองอ็อบเจ็กต์ที่มีคุณสมบัติเหมือนกัน


ภาพรวม

สมมติว่าเรามีอ็อบเจ็กต์สองอ็อบเจ็กต์:

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 }