在Javascript数组中一起添加类似项

Bea*_*rea 3 javascript arrays sorting multidimensional-array

我正在尝试遍历一个数组,以便对总数进行分组和计数.

例如:

var farm = [['Cats', 3], ['Cats', 4], ['Mice', 2], ['Dogs', 5]];
Run Code Online (Sandbox Code Playgroud)

我想通过并首先看到'猫',然后添加所有猫值,然后重复其他独特类别的过程.

最终的输出是:

Cats (7)
Mice (2)
Dogs (5)
Run Code Online (Sandbox Code Playgroud)

目前,我正试图以这种方式实现它,但我显然在某个地方犯了一个菜鸟错误.

var farm = [];
farm.push(['Cats', 3], ['Cats', 4], ['Mice', 2], ['Dogs', 5]);
var animalCounter = function(array){
    var list = '';
    for(var i = 0; i<array.length; i++){
        var animalID = array[i][0];
        var animalCount = 0;
        for (var x; x<array.length; x++){
            if(animalID == array[x][0]){
                animalCount += array[x][0] - 1;
            }
            list += animalID + " (" + animalCount + ")\n";
        }

    }
    alert(list);
}
animalCounter(farm);
Run Code Online (Sandbox Code Playgroud)

ade*_*neo 5

使用一个物体将类似的动物加在一起

var farm = [];
farm.push(['Cats', 3], ['Cats', 4], ['Mice', 2], ['Dogs', 5]);

var o = {};

for (var i=farm.length; i--;) {
    var key = farm[i][0],
        val = farm[i][1];

    o[key] = key in o ? o[key] + val : val;
}
Run Code Online (Sandbox Code Playgroud)

小提琴

然后很容易创建列表

for (var key in o) {
    list += key + " (" + o[key] + ")\n";
}
Run Code Online (Sandbox Code Playgroud)

小提琴