根据数组中的键连接并删除一些json元素

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)

谢谢

Nik*_*wal 5

您可以尝试使用Array.reduceObject.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)