每个字符出现在一个字符串中

时间:2013-02-10 13:08:35

标签: javascript

如何编写一个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 个答案:

答案 0 :(得分:5)

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;
}, {});

答案 1 :(得分: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]); 
}

答案 2 :(得分: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);

答案 3 :(得分: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 对象表示输入中的字符。