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)
使用一个物体将类似的动物加在一起
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)