ลบเอลีเมนต์ที่ซ้ำกัน ทั้งหมด ออกจากอาร์เรย์ ค่าที่ปรากฏมากกว่า 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 เก็บเฉพาะค่านี้