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

การหาตัวเลขที่แตกต่างในอาร์เรย์ - JavaScript

อาร์เรย์มีสมาชิกส่วนใหญ่เหมือนกัน มีเพียง 1 ตัวที่แตกต่าง ฟังก์ชันนี้หาตัวที่แตกต่างออก

ตัวอย่าง

// Input: [2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4]
// Output: 2

ตัวอย่างโค้ด

const arr = [2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4];

const findUnlike = arr => {
  for (let i = 1; i < arr.length - 1; i++) {
    // ตรวจสอบรูปแบบต่างๆ ของตำแหน่งที่แตกต่าง
    if (arr[i] - arr[i - 1] !== 0 && arr[i] - arr[i + 1] === 0) {
      return arr[i - 1];
    } else if (arr[i] - arr[i - 1] !== 0 && arr[i] - arr[i + 1] !== 0) {
      return arr[i];
    } else if (arr[i] - arr[i - 1] === 0 && arr[i] - arr[i + 1] !== 0) {
      return arr[i + 1];
    }
  }
};

console.log(findUnlike(arr));

วิธีที่ดีกว่า (ใช้ Map)

const findUnlikeBetter = arr => {
  const count = new Map();
  for (const val of arr) {
    count.set(val, (count.get(val) || 0) + 1);
  }
  for (const [val, cnt] of count) {
    if (cnt === 1) return val;
  }
};

ผลลัพธ์

2

ข้อสังเกต: โค้ดต้นฉบับมีเงื่อนไขซ้ำซ้อนและซับซ้อน วิธี Map เรียบง่ายกว่าและรองรับทุกกรณี