สำหรับจุดประสงค์ของคำถามนี้ เรากำหนดประโยคเป็นสตริงที่ประกอบด้วยตัวอักษรภาษาอังกฤษและเครื่องหมายวรรคตอน และคำหนึ่งๆ คือสตริงย่อยของประโยคนั้นที่เชื่อมเข้าด้วยกันด้วยช่องว่าง
เราจำเป็นต้องเขียนฟังก์ชัน 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' ]