下面的函数获取指定字符串中每个字母的出现次数。我了解在第二个 for 循环之前发生了什么。他为什么要添加 "var j = i + 1;"
?而不是以 "var j=0"
开头?
function okkur(txt) {
var str = txt.toLowerCase().replace(/\s+/g, "").split("");
var okk = "";
var count = 0
for (var i = 0; i < str.length; i++) {
count = 1;
for (var j = i + 1; j <= str.length; j++) {
if (str[i] === str[j]) {
count++;
str.splice(j, 1);
}
}
okk = okk.concat(str[i] + " occurs " + count + " times. \n");
}
return okk;
}
或者有没有更简单的方法可以完成这个功能?
最佳答案
您可以为每个字母的计数取一个哈希表。
这种方法使用一个循环来访问所有字母,并使用另一个循环来生成结果。
function okkur(txt) {
var hash = Object.create(null);
txt .toLowerCase()
.replace(/\s+/g, "")
.split("")
.forEach(function (c) {
hash[c] = (hash[c] || 0) + 1;
});
return Object
.keys(hash)
.map(function (k) {
return k + " occurs " + hash[k] + " times.";
})
.join('\n');
}
console.log(okkur('stackoverflow'));
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 函数获取指定字符串中每个字母出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48065886/