使用 JavaScript 计算字符串中字符出现的频率

新手上路,请多包涵

我需要编写某种循环来计算字符串中每个字母的出现频率。

例如: "aabsssd"

输出: a:2, b:1, s:3, d:1

还想映射与对象中的属性名称相同的字符。任何好主意如何做到这一点?

我不知道该怎么做。

这是我到目前为止的位置:

 var arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];

function counter(x) {
  var count = 0,
    temp = [];
  x = x.split('');
  console.log(x);
  for (var i = 0, len = x.length; i < len; i++) {
    if (x[i] == "a") {
      count++;
    }
  }
  return count;
}
var a = "aabbddd";
console.log(counter(a));

原文由 Samrat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 475
2 个回答

干得好:

 function getFrequency(string) {
    var freq = {};
    for (var i=0; i<string.length;i++) {
        var character = string.charAt(i);
        if (freq[character]) {
           freq[character]++;
        } else {
           freq[character] = 1;
        }
    }

    return freq;
};

原文由 Jonathan Crowe 发布,翻译遵循 CC BY-SA 3.0 许可协议

一些带有 reduce 的 ES6 语法:

 let counter = str => {
  return str.split('').reduce((total, letter) => {
    total[letter] ? total[letter]++ : total[letter] = 1;
    return total;
  }, {});
};

counter("aabsssd"); // => { a: 2, b: 1, s: 3, d: 1 }

原文由 russiansummer 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏