0

如何编写一个 javascript 代码来计算字符串中每个字符的出现次数?

e.g 
String is : Hello World 

Output :  
count of H -> 1
count of e -> 1
count of l -> 3
count of o -> 2 
count of r -> 1
count of d -> 1 
count of W -> 1 
4

4 回答 4

7
var counts = {};
yourstring.split('').map(function(ch) {
  counts[ch] = (counts[ch] || 0) + 1;
});

或者是时髦并使用 map/reduce:

var counts = yourstring.split('').reduce(function(dst, c) {
  dst[c] = (dst[c] || 0) + 1;
  return dst;
}, {});
于 2013-02-10T13:15:20.457 回答
1

这段代码应该可以工作:

var str = "Hello World";
var arr = str.split('');
var occ = {};
for(var i=0,c=arr.length;i<c;i++){
    if(occ[arr[i]]) occ[arr[i]]++;
    else occ[arr[i]] = 1;
}
for(var i in occ){
    alert('count of '+i+' -> '+occ[i]); 
}
于 2013-02-10T13:15:04.540 回答
0
var splitWord = "Hello World".split('');
var letters = {};
for(var i in splitWord)
{
    var letter = splitWord[i];
    if(letter == ' ') continue;
    if(typeof letters[letter] == 'undefined')
    {
        letters[letter] = 0;
    }
    letters[letter]++;
}
console.dir(letters);
于 2013-02-10T13:15:28.837 回答
0

下面是我使用旧的简单 for 循环的解决方案。这种方法以最简单的方式回答了初学者的问题。此代码会将输入中的所有字母转换为小写并计算它们的出现次数。在这个解决方案中,我们还将特殊字符和空格算作有效字符。

  function countChar(str) {
            var count = {};
            for (let i = 0; i < str.length; i++) {
                var ch = str[i].toLowerCase();
                if (count[ch] > 0) {
                    count[ch]++;
                } else {
                    count[ch] = 1;
                }
            }
            return count;
        }

count 对象表示输入中的字符。

于 2021-04-08T16:27:33.810 回答