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

บวกค่าของ key ที่ตรงกันในอาร์เรย์ของอ็อบเจกต์ - JavaScript

สมมติว่าเรามีอาร์เรย์ของอ็อบเจกต์ดังนี้:

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 }