javascript - 将一个数组值复制到其他数组

标签 javascript arrays loops lodash

我有以下 JSON 数组。我想为 dayOfWeek 设置时间表,该时间表不存在于其他房间

时间表
const data = {
  rooms: [
    {
      roomId: 1,
      schedules: []
    },
    {
      roomId: 2,
      schedules: [
        { home1: "05:05", dayOfWeek: 1, away: "20:30" },
        { home1: "06:05", dayOfWeek: 5, away: "21:30" },
        { home1: "07:05", dayOfWeek: 7, away: "22:30" }
      ]
    },
    {
      roomId: 3,
      schedules: []
    }
  ]
}

我还需要将相同的时间表复制到其他房间。

预期输出

const finalArray = [
  { home1: "05:05", dayOfWeek: 1, away: "20:30", roomId: 1 }, //schedules from room2
  { home1: "06:05", dayOfWeek: 5, away: "21:30", roomId: 1 }, //schedules from room2
  { home1: "07:05", dayOfWeek: 7, away: "22:30", roomId: 1 }, //schedules from room2 

  { home1: "05:05", dayOfWeek: 1, away: "20:30", roomId: 3 }, //schedules from room2
  { home1: "06:05", dayOfWeek: 5, away: "21:30", roomId: 3 }, //schedules from room2
  { home1: "07:05", dayOfWeek: 7, away: "22:30", roomId: 3 }, //schedules from room2 
]

我已经尝试过了,但没能成功!!!请帮忙!!!

最佳答案

您可以先找到真相室来源,然后使用Array.reduce将时间表提取/复制到其他人:

const data = { rooms: [ { roomId: 1, schedules: [] }, { roomId: 2, schedules: [ { home1: "05:05", dayOfWeek: 1, away: "20:30" }, { home1: "06:05", dayOfWeek: 5, away: "21:30" }, { home1: "07:05", dayOfWeek: 7, away: "22:30" } ] }, { roomId: 3, schedules: [] } ] }

const theRoom = data.rooms.find(x => x.schedules.length)
const result = data.rooms.reduce((r,{roomId, schedules}) => {
  if(roomId != theRoom.roomId)
     r.push(...theRoom.schedules.map(x => ({ roomId, ...x })))
  return r
}, [])
console.log(result)

关于javascript - 将一个数组值复制到其他数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53646843/

相关文章:

javascript - 可选(选择性)流程检查

arrays - 从 SwiftUI 中的列表中删除绑定(bind)

javascript - 当 javascript 中的字段值不正确时取消下一个事件

javascript - Javascript 中标识符的 Unicode 转义序列

php - 我如何获得最终的数组?

java - 重用 Java 扫描器

python - 在 Python 中总结一个列表 - 在一个元组和另一个列表中

Ruby 循环问题

javascript - 工厂中的 Firebase 查询

c - 如何在c中找到数组中最大和最小的数字