Computer >> Máy Tính >  >> Lập trình >> Javascript

Lọc các giá trị mảng duy nhất và tính tổng trong JavaScript

Giả sử, chúng ta có một mảng các mảng như thế này -

const arr = [[12345, "product", "10"],[12345, "product", "15"],[1234567, "other", "10"]];

Chúng ta phải viết một hàm nhận trong một mảng như vậy. Lưu ý rằng tất cả các mảng con có chính xác ba phần tử trong đó.

Hàm của chúng ta nên lọc ra mảng con có giá trị lặp lại làm phần tử đầu tiên của nó. Hơn nữa, đối với mảng con, chúng tôi xóa, chúng tôi nên thêm phần tử thứ ba của chúng vào phần tử không lặp lại hiện có của nó.

Vì vậy, đối với mảng trên, kết quả đầu ra sẽ giống như -

const output = [[12345, "product", "25"],[1234567, "other", "10"]];

Ví dụ

Mã cho điều này sẽ là -

const arr = [[12345, "product", "10"],[12345, "product", "15"],[1234567,
"other", "10"]];
const addSimilar = (arr = []) => {
   const res = [];
   const map = {};
   arr.forEach(el => {
      const [id, name, amount] = el;
      if(map.hasOwnProperty(id)){
         const newAmount = +amount + +res[map[id] - 1][2];
         res[map[id] - 1][2] = '' + newAmount;
      }else{
         map[id] = res.push(el);
      }
   });
   return res;
}
console.log(addSimilar(arr));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[ [ 12345, 'product', '25' ], [ 1234567, 'other', '10' ] ]