สำหรับจุดประสงค์ของคำถามนี้ เรากำหนดประโยคเป็นสตริงที่ประกอบด้วยตัวอักษรภาษาอังกฤษและเครื่องหมายวรรคตอน และคำหนึ่งๆ คือสตริงย่อยของประโยคนั้นที่เชื่อมเข้าด้วยกันด้วยช่องว่าง
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้สตริงประโยค str เป็นอาร์กิวเมนต์แรกและตัวเลข num เป็นอาร์กิวเมนต์ที่สอง ฟังก์ชันควรนับความถี่ของแต่ละคำในประโยคก่อน แล้วจึงคืนค่าอาร์เรย์ของความยาว num ที่มี num คำที่ใช้บ่อยที่สุดที่วางตามความถี่ที่ลดลง
ตัวอย่างเช่น −
หากประโยคอินพุตและตัวเลขเป็น −
const str = 'i am a good coder and i know that i can solve a problem'; const num = 2;
จากนั้นผลลัพธ์ควรเป็น −
const output = ['i', 'a'];
เพราะ 'i' ปรากฏ 3 ครั้งในขณะที่ 'a' ปรากฏ 2 ครั้งในอาร์เรย์และเป็น 2 คำที่ใช้บ่อยที่สุดในสตริง
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const str = 'i am a good coder and i know that i can solve a problem';
const num = 2;
const findMostFrequent = (str = '', num = 1) => {
const strArr = str.split(' ');
const map = {};
strArr.forEach(word => {
if(map.hasOwnProperty(word)){
map[word]++;
}else{
map[word] = 1;
}
});
const frequencyArr = Object.keys(map).map(key => [key, map[key]]);
frequencyArr.sort((a, b) => b[1] - a[1]);
return frequencyArr.slice(0, num).map(el => el[0]);
};
console.log(findMostFrequent(str, num)); ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[ 'i', 'a' ]