计算数组的字符串,JavaScript

时间:2015-11-10 15:08:16

标签: javascript arrays string algorithm

//解决

我有一个包含字符串的数组。 我需要计算数组中每个字母的字母数。

我的功能:

...
    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? 我要感谢每一点帮助和建议。谢谢!

3 个答案:

答案 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。如果确实存在,则只需将其递增一个。