ดึงเฉพาะค่าที่ปรากฏ ครั้งเดียวพอดี ในอาร์เรย์ (Unique Values - ไม่ใช่ Distinct)
ตัวอย่าง
[1, 1, 2, 2, 3, 4, 4, 5] → [3, 5]
ตัวอย่างโค้ด
const extractUnique = arr => {
const res = [];
for (let i = 0; i < arr.length; i++) {
if (arr.indexOf(arr[i]) === arr.lastIndexOf(arr[i])) {
res.push(arr[i]);
}
}
return res;
};
console.log(extractUnique([1, 1, 2, 2, 3, 4, 4, 5]));
ผลลัพธ์
[ 3, 5 ]
วิธีแบบ Map (O(n))
const extractUnique = arr => {
const freq = new Map();
for (const v of arr) freq.set(v, (freq.get(v) || 0) + 1);
return [...freq.entries()].filter(([_, c]) => c === 1).map(([v]) => v);
};
ความแตกต่างสำคัญ
- Unique: ปรากฏ 1 ครั้งพอดี → [3, 5]
- Distinct: ค่าที่ไม่ซ้ำกัน → [1, 2, 3, 4, 5]