Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ค้นหา n คำที่พบบ่อยที่สุดจากประโยคใน JavaScript


สำหรับจุดประสงค์ของคำถามนี้ เรากำหนดประโยคเป็นสตริงที่ประกอบด้วยตัวอักษรภาษาอังกฤษและเครื่องหมายวรรคตอน และคำหนึ่งๆ คือสตริงย่อยของประโยคนั้นที่เชื่อมเข้าด้วยกันด้วยช่องว่าง

เราจำเป็นต้องเขียนฟังก์ชัน 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' ]