javascript - 将一个数组值复制到其他数组
问题描述
我有以下 JSON 数组。我想为另一个dayOfWeek
中不存在的设置时间表schedules
rooms
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
]
我已经尝试过,但无法让它工作!!!请帮忙!!!
解决方案
您可以先找到source of truth room
,然后使用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)
推荐阅读
- css - CSS 动画和 z-index
- javascript - 在 CoffeeScript / JS 中为变量分配函数
- flutter - Flutter UI 视觉噪声和失真
- scala - 带有 Scala 的 Gson 导致 StackOverflow 的枚举
- kotlin - 即使使用默认目录结构,`gradlew run` 也找不到主 kotlin 类
- angular - RxJS 发出多个 AJAX 请求,然后通过另一个 AJAX 请求获取一个新列表
- fortran - 如何在 MPI_init 之前更改 MPI 错误处理程序?
- php - 如何在 O(1) 时间内不向数组添加重复项
- c - 为什么不能在 c 中初始化 main() 之外的结构值?
- angular - 如何订阅从 ngrx 的实体数据服务返回的 Observable