【发布时间】:2020-12-15 23:23:42
【问题描述】:
我有 2 个数据结构,如下所示
数据1:
{
purchaceOrder: [{
name: "Purchase Order",
version: 1,
description: "purchase order process",
saved: true,
visibility: true
},
{
name: "Purchase Order",
version: 2,
description: "purchase order process",
saved: false,
visibility: true
}
],
requestOrder: [{
name: "Request Order",
version: 1,
description: "request order process",
saved: true,
visibility: true
},
{
name: "Request Order",
version: 2,
description: "request order process",
saved: false,
visibility: true
}
],
cancelOrder: [{
name: "Cancel Order",
version: 1,
description: "cancel order process",
saved: false,
visibility: false
}]
}
数据2:
[
{
id: "dwffrgefg68964",
name: "Purchase Order",
version: 1
},
{
id: "emffrgefg68964",
name: "Purchase Order",
version: 2
},
{
id: "iuffrgefg68964",
name: "request Order",
version: 1
}
]
我想根据名称过滤data1,将data2中的id添加到data1中的每个对象,如果在data2中找不到进程名称,则删除data1中的整个对象/空数组,如下所示
最终结果:
{
purchaceOrder: [{
id: "dwffrgefg68964"
name: "Purchase Order",
version: 1,
description: "purchase order process",
saved: true,
visibility: true
},
{
id: "emffrgefg68964"
name: "Purchase Order",
version: 2,
description: "purchase order process",
saved: false,
visibility: true
}
],
requestOrder: [{
id: "iuffrgefg68964"
name: "Request Order",
version: 1,
description: "request order process",
saved: true,
visibility: true
}]
}
我尝试了各种解决方案,但无法获得预期的结果。这就是我所拥有的:
getAllProcess(){
for (let key in data1) {
var temp1 = data1[key];
for (let i = 0; i < temp1.length; i++) {
const reqModel = data2.find(process=> process.name === temp1[i].name&& process.version === temp1[i].version);
if(reqModel){
temp1[i].id=reqModel.id;
data1[key][i]=temp1[i];
}
}}
return data1;
}
【问题讨论】:
-
如果
saved和visibility属性在data2中不存在,你如何定义它? -
@OsmanOmar 两个数据都来自后端不同的表。我只想使用具有 id 的进程修改 data1。
标签: arrays json angular typescript