Javascript 基于id转换json数组
我想根据sID和pID属性将数组转换为另一个数组 我拥有的阵列是:Javascript 基于id转换json数组,javascript,json,Javascript,Json,我想根据sID和pID属性将数组转换为另一个数组 我拥有的阵列是: data = [{ { "sID": 10, "pID": 5, "Sum": 9300, "class": "one", },{ "sID": 10, "pID": 5, "Sum": 2200, "class": "two", },{ "sID": 10, "pID":6 , "Sum": 4600,
data = [{
{
"sID": 10,
"pID": 5,
"Sum": 9300,
"class": "one",
},{
"sID": 10,
"pID": 5,
"Sum": 2200,
"class": "two",
},{
"sID": 10,
"pID":6 ,
"Sum": 4600,
"class": "one",
},{
"sID": 10,
"pID": 6,
"Sum": 5300,
"class": "two"
}]
我想创建以下格式的数据
[{"sID":10,"pID":5,"one":9300,"two":2200},
{"sID":10,"pID":6,"one":4600,"two":5300}]
有办法做到这一点吗?您可以为同一组键创建一个哈希表,并将值的总和分配给结果
var data=[{sID:10,pID:5,Sum:9300,类:“一”},{sID:10,pID:5,Sum:2200,类:“二”},{sID:10,pID:6,Sum:4600,类:“一”},{sID:10,pID:6,Sum:5300,类:“二”},
键=['sID','pID'],
结果=对象值(数据减少((h,o)=>{
var key=keys.map(k=>o[k]).join(“|”);
如果(!h[key]){
h[key]=Object.assign(…keys.map(k=>({[k]:o[k]}));
}
h[key][o.class]=(h[key][o.class]| | 0)+o.Sum;
返回h;
},Object.create(null));
控制台日志(结果)代码>
.as控制台包装{最大高度:100%!重要;顶部:0;}
更基本:
const
数据=[
{“sID”:10,“pID”:5,“Sum”:9300,“class”:“one”}
,{“sID”:10,“pID”:5,“Sum”:2200,“class”:“two”}
,{“sID”:10,“pID”:6,“Sum”:4600,“class”:“one”}
,{“sID”:10,“pID”:6,“Sum”:5300,“class”:“two”}
];
var结果=[];
data.forEach(e=>{
设idx=Result.findIndex(k=>k.sID==e.sID&&k.pID==e.pID);
如果(idx)“有办法做到这一点吗?”是的。你杀了我…(同一组密钥的哈希表)