หาผลรวมของค่าที่ปรากฏ เพียงครั้งเดียว ในอาร์เรย์ (Unique Values - ไม่ใช่ Distinct)
ตัวอย่าง
[2, 5, 5, 3, 2, 7, 4, 9, 9, 11] Unique (ปรากฏ 1 ครั้ง): 3, 7, 4, 11 Sum = 25
ตัวอย่างโค้ด
const sumUnique = arr => {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
if (arr.indexOf(arr[i]) === arr.lastIndexOf(arr[i])) {
sum += arr[i];
}
}
return sum;
};
console.log(sumUnique([2, 5, 5, 3, 2, 7, 4, 9, 9, 11]));
ผลลัพธ์
25
วิธีแบบ Map (O(n) - เร็วกว่า)
const sumUnique = 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).reduce((s, [v]) => s + v, 0);
};
ความแตกต่าง Unique vs Distinct
| ประเภท | คำอธิบาย | ตัวอย่าง [1,2,2,3] |
|---|---|---|
| Unique | ปรากฏ 1 ครั้งพอดี | 1, 3 → Sum = 4 |
| Distinct | ค่าที่ไม่ซ้ำกัน (Unique Values) | 1, 2, 3 → Sum = 6 |