Javascript 使用两个键对Json数据进行分组并获取总计数
是否有一种方法可以使用2个键对JSON数组进行分组,并在Javascript中获得分组对象键的计数 需要Javascript的解决方案 预期结果: counts对象的长度应仅为5,所有键的总和应分组在一起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
[
{
"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进行分组。我已根据需要修改了代码。是的,其工作正常。。