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

ดึงค่าที่ไม่ซ้ำ (Unique Values) จากอาร์เรย์ - JavaScript

ดึงเฉพาะค่าที่ปรากฏ ครั้งเดียวพอดี ในอาร์เรย์ (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]