Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tổng giá trị số tương tự trong mảng đối tượng - JavaScript


Giả sử chúng ta có mảng đối tượng như sau:

const arr = [ 
  {"firstName":"John", "value": 89}, 
  {"firstName":"Peter", "value": 151}, 
  {"firstName":"Anna", "value": 200}, 
  {"firstName":"Peter", "value": 22}, 
  {"firstName":"Anna","value": 60} 
];

Chúng ta cần viết hàm nhận vào mảng này và gom nhóm giá trị value của các object có firstName trùng nhau.

Kết quả đầu ra:

const output = [ 
  {"firstName":"John", "value": 89}, 
  {"firstName":"Peter", "value": 173}, 
  {"firstName":"Anna", "value": 260} 
];

Với mỗi object, ta đệ quy tìm các object tương tự (cùng firstName), cộng value vào một object và xóa object kia. Lặp cho đến hết mảng.

Ví dụ

Dưới đây là đoạn code:

const arr = [ 
  {"firstName":"John", "value": 89}, 
  {"firstName":"Peter", "value": 151}, 
  {"firstName":"Anna", "value": 200}, 
  {"firstName":"Peter", "value": 22}, 
  {"firstName":"Anna","value": 60} 
]; 
const sumSimilar = arr => { 
  const res = []; 
  for(let i = 0; i < arr.length; i++){ 
    const ind = res.findIndex(el => el.firstName === arr[i].firstName); 
    if(ind === -1){ 
      res.push(arr[i]); 
    }else{ 
      res[ind].value += arr[i].value; 
    }; 
  }; 
  return res; 
}; 
console.log(sumSimilar(arr));

Kết quả

Đoạn code sẽ in ra console:

[ 
  { firstName: 'John', value: 89 }, 
  { firstName: 'Peter', value: 173 }, 
  { firstName: 'Anna', value: 260 } 
]