ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ arr ของสตริงของตัวอักษรตัวพิมพ์เล็กภาษาอังกฤษเป็นอาร์กิวเมนต์แรก อาร์กิวเมนต์ที่สองของฟังก์ชันของเราคือตัวเลข num (num
ฟังก์ชันของเราควรจะคืนค่าจำนวนองค์ประกอบที่บ่อยที่สุดในอาร์เรย์ arr
คำตอบควรจัดเรียงตามความถี่จากมากไปน้อย หากคำสองคำมีความถี่เท่ากัน คำที่เรียงตามตัวอักษรต่ำกว่าจะมาก่อน
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ
ป้อนข้อมูล
ผลผลิต
คำอธิบายผลลัพธ์
"the", "is", "sunny" และ "day" เป็นคำสี่คำที่ใช้บ่อยที่สุด
โดยมีจำนวนครั้งเป็น 4, 3, 2 และ 1 ตามลำดับ
ต่อไปนี้เป็นรหัส -const arr = ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"];
const num = 4;
const output = ["the", "is", "sunny", "day"];
ตัวอย่าง
const arr = ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"];
const num = 4;
const mostFrequent = (arr = [], num = 1) => {
const map = {};
let keys = [];
for (let i = 0; i < arr.length; i++) {
if (map[arr[i]]) {
map[arr[i]]++;
} else {
map[arr[i]] = 1;
}
}
for (let i in map) {
keys.push(i);
}
keys = keys.sort((a, b) => {
if (map[a] === map[b]) {
if (a > b) {
return 1;
} else {
return -1;
}
}
else {
return map[b] - map[a];
}
})
.slice(0, num);
return keys;
};
console.log(mostFrequent(arr, num));
ผลลัพธ์
[ 'the', 'is', 'sunny', 'day' ]