Javascript 基于id转换json数组

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,

我想根据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,
     "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)“有办法做到这一点吗?”是的。你杀了我…(同一组密钥的哈希表)