Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:如何对多维数组中的值进行分组和求和_Javascript_Multidimensional Array - Fatal编程技术网

Javascript:如何对多维数组中的值进行分组和求和

Javascript:如何对多维数组中的值进行分组和求和,javascript,multidimensional-array,Javascript,Multidimensional Array,我有这样一个数组: { "AGE270": 9, "AGE203": 5, // etc } { AGE270: 9, AGE203: 5, AGE208: 9 } 我想分组并得到每次重复的总和,如下所示: { "AGE270": 9, "AGE203": 5, // etc } { AGE270: 9, AGE203: 5, AGE208: 9 } 年龄270:9 年龄203:5 年龄208:9 年龄XX

我有这样一个数组:

{
    "AGE270": 9,
    "AGE203": 5,
    // etc
}
{
  AGE270: 9,
  AGE203: 5,
  AGE208: 9
} 

我想分组并得到每次重复的总和,如下所示:

{
    "AGE270": 9,
    "AGE203": 5,
    // etc
}
{
  AGE270: 9,
  AGE203: 5,
  AGE208: 9
} 
  • 年龄270:9
  • 年龄203:5
  • 年龄208:9
  • 年龄XXX:n
使用:

计数
现在将是如下所示的对象:

{
    "AGE270": 9,
    "AGE203": 5,
    // etc
}
{
  AGE270: 9,
  AGE203: 5,
  AGE208: 9
} 
使用此代码,您将获得
sum
对象中每个键对应的总数。大概是这样的:

{
    "AGE270": 9,
    "AGE203": 5,
    // etc
}
{
  AGE270: 9,
  AGE203: 5,
  AGE208: 9
} 
试试这个:

function( data ){
        var outputObj = {} ;
        for(var i=0;i < data.length; i++){
                 datum = data[i];
                 if(outputObj[datum.AGENDADOR])
                         outputObj[datum.AGENDADOR] += parseInt( datum.TOTAL) ;
                 else
                         outputObj[datum.AGENDADOR] = parseInt( datum.TOTAL);
                }

        return outputObj;
功能(数据){
var outputObj={};
对于(变量i=0;i
})

一个简单的map()函数怎么样?像这样:

var t = YourArray;
var u = t.map(function (a, i) { var g = {}; g[a.AGENDADOR] = a.TOTAL; return g; });
使用函数的简单解决方案:

//用实际数组替换arr!
var arr=[
{AGENDADOR:'AGE270',总数:6},
{AGENDADOR:'AGE270',总数:3},
{AGENDADOR:'AGE203',总数:5},
{AGENDADOR:'AGE028',总数:9},
],
总计=arr.REDUCT(功能(r,o){
(r[o.AGENDADOR])?r[o.AGENDADOR]+=o.TOTAL:r[o.AGENDADOR]=o.TOTAL;
返回r;
}, {});

控制台日志(总计)谢谢,工作得很好,但是,这个“{}”到底是为了什么?我做了一个测试,当然结果不是预期的。@MagnoAlberto,它叫initialValue。我引用了文档中的解释,事情是你以一个不同的对象结束,与原来的对象不一样,但是分组了。谢谢,但它不起作用,我想我会用“map”来完成,当然,你的代码比我的好。看看罗马人的答案,reduce应该也能很好地工作。