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

หาตัวอักษรที่มีความถี่เป็นอันดับสองในอาร์เรย์ - JavaScript

บทความนี้จะสาธิตวิธีเขียนฟังก์ชัน JavaScript เพื่อหาค่าที่มีความถี่เป็นอันดับสองในอาร์เรย์ โดยใช้ Map นับจำนวนครั้งที่แต่ละค่าปรากฏ แล้วจัดเรียงตามความถี่มากไปน้อย

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

const arr = [1, 34, 4, 3, 2, 1, 4, 6, 4, 6, 5, 3, 6, 6];

const secondMostFrequent = arr => {
  const map = arr.reduce((acc, val) => {
    if (acc.has(val)) {
      acc.set(val, acc.get(val) + 1);
    } else {
      acc.set(val, 1);
    }
    return acc;
  }, new Map());

  const frequencyArray = Array.from(map);
  return frequencyArray.sort((a, b) => b[1] - a[1])[1][0];
};

console.log(secondMostFrequent(arr));

ผลลัพธ์

4

คำอธิบาย

  1. ใช้ reduce สร้าง Map เก็บค่าเป็น key และจำนวนครั้งเป็น value
  2. แปลง Map เป็นอาร์เรย์ของคู่ [value, count]
  3. จัดเรียง (sort) ตาม count จากมากไปน้อย
  4. ดึงค่าที่ index 1 (อันดับ 2) มาใช้

หมายเหตุ: โค้ดนี้สมมติว่ามีค่าอย่างน้อย 2 ค่าที่แตกต่างกันในอาร์เรย์