//解决
我有一个包含字符串的数组。 我需要计算数组中每个字母的字母数。
我的功能:
...
for (var k=0; k<=arrB.length; k++) { //Index of the array
for(var t=0; t<arrB.length; t++) {
if(p==arrB[k[t]]){
count++;
}}
}numb.push(count);
}
var inNumber;
for(var q=0; q< numb.length; q++) {
if(numb[q]>0) {
var letterR=q+65; //Number in letter
inNumber=String.fromCharCode(letteR);
showResult(inNumber);
showResult(numb[q]);
...
为什么我的计数器总是0? 我要感谢每一点帮助和建议。谢谢!
答案 0 :(得分:1)
将每个字符串拆分成一个字母数组,计算沿途的每个字符。
function countLetters(arr) {
return arr.reduce(function (counts, str){
str.split('').forEach(function (letter) {
counts[letter] ? counts[letter]++ : counts[letter] = 1;
});
return counts;
}, {});
};
// Example
var arr = ['ABC', 'BCD', 'CDE'];
console.log(countLetters(arr));
// Logs: Object {A: 1, B: 2, C: 3, D: 2, E: 1}
答案 1 :(得分:1)
首先,在您的示例中,您有一个对象{}
而不是一个数组 - 请修复它。溶液
var arr = ["ABC", "CAG", "ZXZ"];
var result = {};
arr.forEach(function(item) {
for(var i = 0; i < item.length; i++) {
var letter = item.charAt(i);
if (!result[letter]) {
result[letter] = 0;
}
result[letter] += 1;
}
});
答案 2 :(得分:1)
计算字符串数组中的字母应该非常简单。例如,您可以这样做:
var arr=["ABC","CAG","ZXZ"];
var letterCount = arr.reduce(function(p,c) {
for (var i=0; i < c.length; i++) {
if (p[c[i]]) {
p[c[i]]++;
}
else {
p[c[i]] = 1;
}
}
return p;
},{});
这将为您提供一个如下所示的对象letterCount
:
{
"A": 2,
"B": 1,
"C": 2,
"G": 1,
"Z": 2,
"X": 1
}
您正在做的是遍历数组并迭代遍历字符串的每个字符串。对于每个字母,您检查一个对象(p
),该对象通过字母键入。如果对象中尚不存在该字母,则添加该字母并将其值设置为1
。如果确实存在,则只需将其递增一个。