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

ลบเอลีเมนต์ที่ซ้ำทั้งหมด (Remove All Duplicates) - JavaScript

ลบเอลีเมนต์ที่ซ้ำกัน ทั้งหมด ออกจากอาร์เรย์ ค่าที่ปรากฏมากกว่า 1 ครั้ง จะหายไปหมด ไม่เหลือเลย

ตัวอย่าง

[763, 55, 43, 22, 32, 43, 763, 43]
→ [55, 22, 32]  (763 และ 43 ซ้ำ จึงหายไปหมด)

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

const deleteDuplicate = arr => 
  arr.filter((item, index, array) => 
    array.indexOf(item) === array.lastIndexOf(item)
  );

console.log(deleteDuplicate([763, 55, 43, 22, 32, 43, 763, 43]));

ผลลัพธ์

[ 55, 22, 32 ]

วิธีแบบ Map (O(n) - เร็วกว่า)

const deleteDuplicate = arr => {
  const freq = new Map();
  for (const v of arr) freq.set(v, (freq.get(v) || 0) + 1);
  return arr.filter(v => freq.get(v) === 1);
};

indexOf === lastIndexOf หมายถึงปรากฏครั้งเดียว (Unique) Filter เก็บเฉพาะค่านี้