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

การหาสมาชิกที่ไม่ซ้ำในอาร์เรย์ - JavaScript

คืนอาร์เรย์ของสมาชิกที่ปรากฏเพียงครั้งเดียว (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]