इस प्रश्न के उद्देश्य के लिए, हम एक वाक्य को एक स्ट्रिंग के रूप में परिभाषित करते हैं जिसमें अंग्रेजी वर्णमाला और विराम चिह्न होते हैं, और एक शब्द उस वाक्य का उपस्ट्रिंग होता है जो व्हाइटस्पेस से जुड़ा होता है।
हमें एक 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' ]