Js查找字符串中出现最多次数的字母和单词

98 阅读1分钟

查询出现次数最多的字母

let str = "abcdaaaabcd123486 hello word";
let num = str.match(/[a-zA-Z]/g).length;
let len = str.match(/[a-zA-Z]/g);
let obj = {};
for (let i = 0; i < len.length; i++) {
let key = len[i];
if (!obj[key]) {
    obj[key] = [1];
} else {
    obj[key].push(1);
    }  
}

let max = 0, name;
let all = [];
for (let key in obj) {
if (obj[key].length === max) {
    max = obj[key].length;
    all.push(key);
} else if (obj[key].length > max) {
    max = obj[key].length;
    all = [];
    all[0] = key;
    }
}
console.log(`出现次数最多的字母为${all},出现了${obj[all[0]].length}次`);

查询出现次数最多的单词

let article = " hello word hello come的喂 come的喂 come的喂";
let newArticle = article.trim();
let match = newArticle.match(/[a-zA-Z]+/ig);
let wordLength, word, max = 0, maxWord = [];
for (let i = 0; i < match.length; i++) {
word = new RegExp("" + match[i] + "", 'g');
wordLength = article.match(word).length;
if (wordLength == max) {
    max = wordLength;
    maxWord.push(match[i]);
} else if (wordLength > max) {
    max = wordLength;
    maxWord = [];
    maxWord[0] = match[i];
}
}
maxWord = [...new Set([...maxWord])];
console.log(`出现次数最多的单词是:${maxWord}。次数为:${max}`);