javascript - 函数获取指定字符串中每个字母出现的次数

标签 javascript function compare

下面的函数获取指定字符串中每个字母的出现次数。我了解在第二个 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/

相关文章:

python - 在不停止另一个功能的情况下运行一个功能

javascript - 在 JavaScript 文件中放置字符集不起作用

javascript - Javascript 循环内的事件处理程序 - 需要闭包吗?

javascript - 仅在内部元素上调用事件监听器(Javascript)

c - 枚举类型值未正确比较

awk粘贴比较打印

java - 使用for循环比较java中的两个数组

javascript - mouseenter JavaScript 不工作

javascript - 如何在表单中应用 checkValidity()?

c - 检查未知单词是否出现在所有 3 个不同长度的字符串中的函数