【发布时间】:2018-01-02 18:20:59
【问题描述】:
以下函数获取指定字符串中每个字母的出现次数。我明白在第二个 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;
}
或者有没有更简单的方法可以实现这个功能?
【问题讨论】:
-
似乎有点过于复杂...
-
在索引 i 处,您已找到给定字符的第一次出现,i+1 您正在检查其他出现,而将 i 放在一边。
-
如果
j是0,那么它会将相同的字符计算为重复 -
我同意。更简单的解决方案?
-
我建议用它创建一个对象,因此您可以将字符串转换为出现的对象,其中键是字符,值是出现次数。您可以使用
reduce轻松进行此转换。例如hello转换为{h:1,e:1,l:2,o:1}。然后,您可以迭代该对象以进行日志记录。
标签: javascript function compare