บทความนี้จะสาธิตวิธีเขียนฟังก์ชัน 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
คำอธิบาย
- ใช้
reduceสร้าง Map เก็บค่าเป็น key และจำนวนครั้งเป็น value - แปลง Map เป็นอาร์เรย์ของคู่ [value, count]
- จัดเรียง (sort) ตาม count จากมากไปน้อย
- ดึงค่าที่ index 1 (อันดับ 2) มาใช้
หมายเหตุ: โค้ดนี้สมมติว่ามีค่าอย่างน้อย 2 ค่าที่แตกต่างกันในอาร์เรย์