计算字符串中每个字符的出现次数

时间:2014-09-15 09:17:29

标签: javascript loops

我有一个这样的字符串: (苹果,苹果,橘子,香蕉,草莓,草莓,草莓)。我想计算每个字符的出现次数,例如香蕉(1)苹果(2)和草莓(3)。我怎么能这样做?

我能找到的最接近的是,我不知道如何适应我的需求:

function countOcurrences(str,   value){
 var regExp = new RegExp(value,     "gi");
return str.match(regExp) ?  str.match(regExp).length : 0;  
}

3 个答案:

答案 0 :(得分:0)

这是通过使用数组实现这一目标的最简单方法..没有任何表达式或东西。代码相当简单,不言自明,还有注释:

var str = "apple,apple,orange,banana,strawberry,strawberry,strawberry";

var arr = str.split(',');  //getting the array of all fruits

var counts = {};  //this array will contain count of each element at it's specific position, counts['apples']
arr.forEach(function(x) { counts[x] = (counts[x] || 0)+1; }); //checking and addition logic.. e.g. counts['apples']+1

alert("Apples: " + counts['apple']);
alert("Oranges: " + counts['orange']);
alert("Banana: " + counts['banana']);
alert("Strawberry: " + counts['strawberry']);

<强> See the DEMO here

答案 1 :(得分:0)

你可以尝试

var wordCounts = str.split(",").reduce(function(result, word){
 result[word] = (result[word] || 0) + 1;
 return result;
}, {});

wordCounts将是哈希{"apple":2, "orange":1, ...}

您可以将其打印为您喜欢的格式。

参见演示http://repl.it/YCO/10

答案 2 :(得分:0)

您也可以使用split

function getCount(str,d) {
    return str.split(d).length - 1;
}
getCount("fat math cat", "at"); // return 3