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

Tổng hợp các giá trị trùng lặp trong mảng - JavaScript

Viết hàm JavaScript nhận vào một mảng số có chứa các giá trị trùng lặp, và trả về mảng mới với tổng của từng nhóm giá trị trùng lặp.

Ví dụ

// Input
const input = [1, 3, 1, 3, 5, 7, 5, 4];

// Output: [1+1, 3+3, 5+5, 7, 4]
const output = [2, 6, 10, 7, 4];

Giải pháp

Sử dụng Map để đếm tần suất xuất hiện của mỗi giá trị, sau đó nhân giá trị với số lần xuất hiện.

const input = [1, 3, 1, 3, 5, 7, 5, 3, 4];

const sumDuplicate = arr => {
  const map = arr.reduce((acc, val) => {
    if (acc.has(val)) {
      acc.set(val, acc.get(val) + 1);
    } else {
      acc.set(val, 1);
    }
    return acc;
  }, new Map());

  return Array.from(map, el => el[0] * el[1]);
};

console.log(sumDuplicate(input));

Kết quả

[ 2, 9, 10, 7, 4 ]

Giải thích: 1 xuất hiện 2 lần → 2, 3 xuất hiện 3 lần → 9, 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.