Viết hàm gộp các phần tử trùng lặp trong mảng bằng cách cộng chúng lại, trả về mảng các tổng theo thứ tự xuất hiện đầu tiên.
Ví dụ
Đầu vào: [1, 3, 1, 3, 5, 7, 5, 4]
1 xuất hiện 2 lần → 2
3 xuất hiện 2 lần → 6
5 xuất hiện 2 lần → 10
7 xuất hiện 1 lần → 7
4 xuất hiện 1 lần → 4
Kết quả: [2, 6, 10, 7, 4]
Giải pháp
Mã triển khai dùng Map:
const input = [1, 3, 1, 3, 5, 7, 5, 4];
const mergeDuplicates = arr => {
const map = new Map();
for (const val of arr) {
map.set(val, (map.get(val) || 0) + val); // Cộng dồn giá trị
}
return Array.from(map.values());
};
console.log(mergeDuplicates(input));
Kết quả
Đầu ra trong console:
[2, 6, 10, 7, 4]
Lưu ý: Code gốc đếm số lần rồi nhân, cách này cộng trực tiếp giá trị. Kết quả giống nhau vì val * count = val + val + ...