Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 使用两个键对Json数据进行分组并获取总计数_Javascript_Arrays_Json_Group By_Grouping - Fatal编程技术网

Javascript 使用两个键对Json数据进行分组并获取总计数

Javascript 使用两个键对Json数据进行分组并获取总计数,javascript,arrays,json,group-by,grouping,Javascript,Arrays,Json,Group By,Grouping,是否有一种方法可以使用2个键对JSON数组进行分组,并在Javascript中获得分组对象键的计数 需要Javascript的解决方案 预期结果: counts对象的长度应仅为5,所有键的总和应分组在一起 [ { "totalCount": 3, "counts": [0,0,3,0,0], "productID": "tea1", "keyVal": &qu

是否有一种方法可以使用2个键对JSON数组进行分组,并在Javascript中获得分组对象键的计数

需要Javascript的解决方案

预期结果: counts对象的长度应仅为5,所有键的总和应分组在一起

[
  {
    "totalCount": 3,
    "counts": [0,0,3,0,0],
    "productID": "tea1",
    "keyVal": "key5",
    "trend": "0"
  },
    {
    "totalCount": 4,
    "counts": [2,2,0,0,0],
    "productID": "tea1",
    "keyVal": "key1",
    "trend": "0"
  },
  {
    "totalCount": 11,
    "counts": [0,5,6,0,0],
    "productID": "group1",
    "keyVal": "key2",
    "trend": "0"
  },
  {
    "totalCount": 616,
    "counts": [101,507,8,0,0],
    "productID": "group1",
    "keyVal": "key1",
    "trend": "0"
 },
]

编辑:我错过了第二把钥匙

好了:

temp1=pasteBin中的json输入

您应该调整趋势变量,因为没有指定如何计算它

函数groupBy(数组,f){
变量组={};
array.forEach(函数(o){
var group=JSON.stringify(f(o));
组[组]=组[组]| |[];
组[组]。推送(o);
});
返回对象。键(组)。映射(函数(组){
返回组[组];
})
}
var结果=分组依据(临时1,函数(项){
return[item.keyVal,item.productID];
});
var输出=[];
result.forEach(分组=>{
变量计数=[0,0,0,0,0];
var totalCount=0;
var趋势=0;
var productID=grouped[0]。productID;
var-keyVal=grouped[0]。keyVal;
grouped.forEach(值=>{
totalCount+=value.totalCount;
value.counts.forEach((x,i)=>count[i]+=x)
})
控制台日志(计数);
输出推送({
计数:计数,
凯瓦尔:凯瓦尔,
totalCount:totalCount,
productID:productID,
趋势:趋势
});

})
输入是什么?我们需要更多的细节来帮助您添加pastebinSo fast的链接,以添加一个负面观点。@PankajKumar好吧,如果您能提供更好的解释和您已经尝试过的内容,那就不会发生……感谢您的努力,但结果与预期的不一样。。您已按keyVal对其进行了分组。它应按keyVal和ProductID进行分组。我已根据需要修改了代码。是的,其工作正常。。