我想遍历下面的两个对象,如果在 start_timestamp 和 end_timestamp 之间没有对所选日期时间进行分配,则布局对象中的值 table.translateY、table.translateX 和 masterId 应设置为 null。
我怎样才能做到这一点?
我的尝试:
layouts = layouts.forEach(function(layout){
assignments.forEach(function(assignment){
layout.tables.map(function(table){
if (table.id !== assignment.tableId && assignment.start_timestamp >= timestamp && !assignment.end_timestamp < timestamp) {
table.translateY = null;
table.translateX = null;
table.masterId = null;
}
});
})
});
我的布局对象看起来像这样:
{
"id":31,
"stationId":31,
"tables":[
{
"id":652,
"number":"040",
"x":1285,
"y":527,
"length":98,
"breadth":69,
"rotation":0,
"shape":"rectangle",
"translateX":0,
"translateY":0,
"masterId":null,
"seats":4
},
{
...
}
]
}
我的赋值对象是这样的:
[ Assignment {
id: 6798,
tableId: 685,
guestGroupId: 60725,
start_timestamp: undefined,
end_timestamp: undefined },
Assignment {...}
]
最佳答案
想法是在您的 map 中进行分配查找 这真的是唯一的方法。您不希望成为不同数据集的嵌套循环。
const newLayouts = layouts.map(layout =>
layout.tables.map(table => {
const assignment = assignments.find(({ id }) => id === table.id);
if (
assignment &&
assignment.start_timestamp >= timestamp &&
!assignment.end_timestamp < timestamp
) {
return {
...table,
translateY: null,
translateX: null,
masterId: null
};
}
// Else
return table;
})
);
关于javascript - 将嵌套数组中的值设置为 null 的功能方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56034816/