Cho mảng các mảng con, mỗi mảng con có 2 phần tử: tên (chuỗi) và số nguyên. Gộp các mảng con có tên trùng nhau, giá trị số là tổng các giá trị tương ứng.
Mảng ví dụ:
const example = [[ 'first', 12 ], [ 'second', 19 ], [ 'first', 7 ]];
Kết quả mong đợi:
const example = [[ 'first', 19 ], [ 'second', 19 ] ];
Hàm combineArray():
Ví dụ
const people = [ [ 'Ram', 21], [ 'Mohan', 33], [ 'Vikram', 25], [ 'Mike', 29], [ 'Mohan', 41], [ 'Vikram', 26] ]; const combineArray = (people) => { const map = {}; for(const index in people){ const name = people[index][0]; const prop = people[index][1]; if(map[name]){ map[name] += prop; }else{ map[name] = prop; } } return Object.keys(map).map(key => [key, map[key]]); } console.log(combineArray(people));Kết quả
Đầu ra console:
[ [ 'Ram', 21 ], [ 'Mohan', 74 ], [ 'Vikram', 51 ], [ 'Mike', 29 ] ]
Hàm duyệt mảng, dùng object map tên→giá trị, cộng dồn nếu trùng, cuối chuyển object thành mảng mảng.
Độ phức tạp thời gian O(2n) ≈ O(n), không gian O(n).