Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การรวมค่าซ้ำในอาร์เรย์โดยการบวกกัน - JavaScript

รวมสมาชิกที่ซ้ำกันในอาร์เรย์โดยการบวกค่าเดิม (ไม่ใช่นับจำนวนครั้ง)

ตัวอย่าง

Input: [1, 3, 1, 3, 5, 7, 5, 4]
1+1=2, 3+3=6, 5+5=10, 7, 4
Output: [2, 6, 10, 7, 4] (ลำดับตามครั้งแรกที่เจอ)

ตัวอย่างโค้ด

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

const mergeDuplicates = 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(mergeDuplicates(input));

ข้อสังเกต

โค้ดคูณ value × count (เช่น 1×2=2, 3×2=6) ไม่ใช่บวกค่าเดิมซ้ำ (1+1=2, 3+3=6) - ผลลัพธ์เหมือนกันแต่ความหมายต่างกัน

ผลลัพธ์

[ 2, 6, 10, 7, 4 ]

ลำดับ: Map รักษาลำดับการ insert (ES2015+) ดังนั้นผลลัพธ์ตามลำดับครั้งแรกที่เจอ