Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于公共ID的行数据合并_Javascript - Fatal编程技术网

Javascript 基于公共ID的行数据合并

Javascript 基于公共ID的行数据合并,javascript,Javascript,我有一个JSON数据 let data = [ { "Id": 1, "Name": "Test", "Datacol1": "1", "Datacol2": 0,"Datacol3": 0 }, { "Id": 2, "Name": "Test123", "Datacol1": "1", "Datacol2": 2, "Datacol3": 0 }, { "Id": 1, "Name": "Test", "Datacol1": "0", "Datacol2": 1, "Datacol3"

我有一个JSON数据

let data = [
 { "Id": 1, "Name": "Test", "Datacol1": "1", "Datacol2": 0,"Datacol3": 0 },
 { "Id": 2, "Name": "Test123", "Datacol1": "1", "Datacol2": 2, "Datacol3": 0 },
 { "Id": 1, "Name": "Test", "Datacol1": "0", "Datacol2": 1, "Datacol3": 0 },
 { "Id": 1, "Name": "Test", "Datacol1": "0", "Datacol2": 0, "Datacol3": 2 }
]
我想合并数据并基于Id将其放入单行数据中,类似于以下输出=

[{"Id":1,"Name":"Test","Datacol1":"1","Datacol2":1,"Datacol3":2}, 
 {"Id":2,"Name":"Test123","Datacol1":"1","Datacol2":2,"Datacol3":0}]

有人能帮我解决这个问题吗。

使用array
reduce
&
findIndex
。使用
findIndex
检查数组是否包含
id
匹配的对象。如果匹配,则检查是否有任何其他键值为0。如果为零,则使用非零值更新

let数据=[{
“Id”:1,
“名称”:“测试”,
“Datacol1”:“1”,
“Datacol2”:0,
“Datacol3”:0
},
{
“Id”:2,
“名称”:“Test123”,
“Datacol1”:“1”,
“Datacol2”:2,
“Datacol3”:0
},
{
“Id”:1,
“名称”:“测试”,
“Datacol1”:“0”,
“Datacol2”:1,
“Datacol3”:0
},
{
“Id”:1,
“名称”:“测试”,
“Datacol1”:“0”,
“Datacol2”:0,
“Datacol3”:2
}
]
设m=数据减少(函数(acc,curr){
让findId=acc.findIndex((项目)=>{
返回项目.Id==当前Id;
});
如果(findId===-1){
附件推送(当前)
}否则{
用于(让钥匙进入acc[findId]){
if(acc[findId][keys]==0){
acc[findId][keys]=当前[keys]
}
}
}
返回acc;
}, []);

console.log(m)
发布的问题似乎根本不包括解决问题的方法。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试过的内容,以便说明您在某个问题中遇到的具体问题。有关更多信息,请参阅并使用。