Atu*_*mar 2 javascript arrays json object
我有一个 JSON 数组对象,它有一个id包含多个条目的属性,每个条目都有更多的属性。我想在此基础上合并这些对象id并删除冗余数据。同样的 id 值也会彼此相邻。查看以下数据以了解更多信息:
var obj = [ {"Id":13075121312, "p1":"R"}
,{"Id":13075121312, "p2":"R"}
,{"Id":13075121312, "p3":"R"}
,{"Id":9160507252, "p1":"R",}
,{"Id":9160507252, "p2":"R",}
,{"Id":9160507252, "p3":"R",}
] ;
Run Code Online (Sandbox Code Playgroud)
我需要按如下方式转换这个对象数组:
var obj = [ {"merchantId":13075121312, "p1":"R", "p2":"R", "p3":"R"}
,{"merchantId":9160507252, "p1":"R", "p2":"R", "p3":"R"}
] ;
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。我尝试了以下功能,但它不起作用:
function jsonConcat(obj) {
for(var i=0; i<obj.length-1; ){
if(obj[i]['d'] === obj[i+1]['Id']){
obj[i]['Id'] = obj[i+1]['Id'];
delete json[obj[i+1]];
}
i = i + 1;
}
return obj;
}
Run Code Online (Sandbox Code Playgroud)
谢谢
您可以尝试使用Array.reduce和Object.values
var obj = [ {"Id":13075121312, "p1":"R"},{"Id":13075121312, "p2":"R"},{"Id":13075121312, "p3":"R"},{"Id":9160507252, "p1":"R"},{"Id":9160507252, "p2":"R"},{"Id":9160507252, "p3":"R"}];
obj = Object.values(obj.reduce((a,{Id, ...rest}) => {
a[Id] = a[Id] || {merchantId:Id};
Object.assign(a[Id], rest);
return a;
}, {}));
console.log(obj);Run Code Online (Sandbox Code Playgroud)