[英]functional way to set value in nested array to null
I want to go through both objects below and if there is no assignment with the selected datetime between the start_timestamp and the end_timestamp the values table.translateY, table.translateX and masterId in the layouts object should be set to null.我想查看下面的两个对象,如果在 start_timestamp 和 end_timestamp 之间没有指定日期时间,则布局对象中的值 table.translateY、table.translateX 和 masterId 应设置为 null。
How can I achieve that?我怎样才能做到这一点?
My try:我的尝试:
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;
}
});
})
});
My layouts object looks like that:我的布局对象看起来像这样:
{
"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
},
{
...
}
]
}
My assignment object looks like this:我的赋值对象如下所示:
[ Assignment {
id: 6798,
tableId: 685,
guestGroupId: 60725,
start_timestamp: undefined,
end_timestamp: undefined },
Assignment {...}
]
The idea is to do an assignment lookup in your map It's really the only way.这个想法是在您的地图中进行分配查找。这确实是唯一的方法。 You don't want to be nesting loops of different data sets.
您不想嵌套不同数据集的循环。
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;
})
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.