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

Tổng các giá trị duy nhất trong mảng (ghép trùng) - JavaScript

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 + ...