Giả sử chúng ta có mảng các mảng như sau:
const arr = [[12345, "product", "10"],[12345, "product", "15"],[1234567, "other", "10"]];
Chúng ta viết hàm nhận vào mảng này. Tất cả mảng con có chính xác ba phần tử.
Hàm lọc bỏ mảng con có giá trị đầu tiên trùng lặp. Ngoài ra, cho mảng con bị loại, cộng phần tử thứ ba vào đối ứng mảng con không trùng.
Kết quả mong đợi:
const output = [[12345, "product", "25"],[1234567, "other", "10"]];
Ví dụ
Mã thực hiện:
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));Kết quả
Kết quả in ra console:
[ [ 12345, 'product', '25' ], [ 1234567, 'other', '10' ] ]