คืนอาร์เรย์ของสมาชิกที่ปรากฏเพียงครั้งเดียว (unique/distinct elements)
ตัวอย่าง
// Input: [9, 5, 6, 8, 7, 7, 1, 1, 1, 1, 1, 9, 8] // Output: [5, 6] (เฉพาะ 5 และ 6 ที่ปรากฏครั้งเดียว)
ตัวอย่างโค้ด
const arr = [9, 5, 6, 8, 7, 7, 1, 1, 1, 1, 1, 9, 8];
const findDistinct = arr => {
const res = [];
for (let i = 0; i < arr.length; i++) {
// indexOf === lastIndexOf → ปรากฏครั้งเดียว
if (arr.indexOf(arr[i]) !== arr.lastIndexOf(arr[i])) continue;
res.push(arr[i]);
}
return res;
};
console.log(findDistinct(arr));
วิธีที่มีประสิทธิภาพมากกว่า (O(n))
const findDistinct = arr => {
const freq = new Map();
for (const val of arr) freq.set(val, (freq.get(val) || 0) + 1);
return [...freq.entries()].filter(([_, v]) => v === 1).map(([k]) => k);
};
ผลลัพธ์
[5, 6]