我想遍历下面的两个对象,如果在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 {...}
]
最佳答案
想法是在地图中进行任务查找
这确实是唯一的方法。您不想成为不同数据集的嵌套循环。
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/