Với mục đích của câu hỏi này, chúng tôi định nghĩa một câu là một chuỗi chứa các bảng chữ cái tiếng Anh và dấu câu và một từ là chuỗi con của câu đó được nối với nhau bằng khoảng trắng.
Chúng tôi được yêu cầu viết một hàm JavaScript lấy chuỗi câu, str, làm đối số đầu tiên và một số, num, làm đối số thứ hai. Trước tiên, hàm sẽ đếm tần suất của mỗi từ trong câu và sau đó trả về một mảng độ dài num chứa num từ thường gặp nhất được đặt theo tần suất giảm dần.
Ví dụ -
Nếu câu đầu vào và số là -
const str = 'i am a good coder and i know that i can solve a problem'; const num = 2;
Sau đó, kết quả đầu ra phải là -
const output = ['i', 'a'];
bởi vì 'i' xuất hiện 3 lần trong khi 'a' xuất hiện 2 lần trong mảng và chúng là 2 từ xuất hiện nhiều nhất trong chuỗi.
Ví dụ
Mã cho điều này sẽ là -
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));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
[ 'i', 'a' ]