Cộng giá trị object trùng khóa trong mảng JavaScript
Giả sử, chúng ta có một mảng object như sau:
const arr = [{a: 2, b: 5, c: 6}, {a:3, b: 4, d:1},{a: 1, d: 2}];
Mỗi object bắt buộc có khóa duy nhất trong chính nó (để là object hợp lệ), nhưng hai object khác nhau có thể có khóa chung (cho mục đích câu hỏi này).
Chúng ta cần viết một hàm JavaScript nhận vào một mảng như vậy và trả về một object với tất cả các khóa duy nhất có trong mảng và tổng tích lũy giá trị của chúng làm giá trị.
Vì vậy, object kết quả nên trông như:
const output = {a: 6, b: 9, c: 6, d: 3};
Do đó, hãy viết mã cho hàm này:
Ví dụ
Mã thực hiện như sau:
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));
Đầu ra
Kết quả trong console sẽ là:
{ a: 6, b: 9, c: 6, d: 3 }