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

การตรวจสอบความถี่ที่ไม่ซ้ำกันของสมาชิกในอาร์เรย์ด้วย JavaScript

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็มเป็นอาร์กิวเมนต์เดียว ฟังก์ชันต้องตรวจสอบว่าจำนวนเต็มทุกตัวที่ปรากฏในอาร์เรย์มีความถี่ (จำนวนครั้งที่ปรากฏ) ที่ไม่ซ้ำกันหรือไม่

ถ้าความถี่ทุกตัวไม่ซ้ำกัน ให้คืนค่า true มิฉะนั้นคืนค่า false

ตัวอย่าง

ถ้าอาร์เรย์นำเข้าคือ:

const arr = [7, 5, 5, 8, 2, 4, 7];

ผลลัพธ์ควรเป็น:

const output = false;

เพราะตัวเลข 7 และ 5 ปรากฏทั้งคู่ 2 ครั้ง

วิธีการ

เราจะใช้แฮชแมป (hash map) เพื่อแมปตัวเลขไปยังความถี่ของมัน จากนั้นใช้แมปนั้นสร้างเซต (set) ที่เก็บความถี่ที่ไม่ซ้ำกัน

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

const arr = [7, 5, 5, 8, 2, 4, 7];
const uniqueAppearances = (arr = []) => {
  const map = {};
  const set = new Set();
  for(let i = 0; i < arr.length; i++) {
    const el = arr[i];
    map[el] = (map[el] || 0) + 1;
  }
  for(key in map) {
    const value = map[key];
    if(set.has(value)) {
      return false;
    }
    set.add(value);
  }
  return true;
};
console.log(uniqueAppearances(arr));

ผลลัพธ์

false