我想遍历下面的两个对象,如果在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/

10-10 02:09