检查嵌套数组中是否存在元素 [英] Check the existence of the element inside the nested array

查看:79
本文介绍了检查嵌套数组中是否存在元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下JSON数组。我想设置 dayOfWeek 的时间表,这些时间表在时间表中不存在

I have below array of JSON. I want to set schedules for the dayOfWeek which are not present inside the schedules

const dummy = { home1: "09:30", away: "05:30" }
const data = {
  rooms: [
    {
      roomId: 1,
      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: 2,
      schedules: []
    }
  ]
}

现在我有点困惑。我需要将相同的时间表复制到房间:2 ,它们位于房间:1 哪些不存在我想用 dayOfWeek

Now I am little bit confused. I need to copy the same schedules to the room: 2 which are in room: 1 and which are not present I want to set dummy with the dayOfWeek

预期输出设置虚拟

const finalArray = [
  //room: 1
  { home1: "09:30", dayOfWeek: 2, away: "05:30", roomId: 1 },  //dummy
  { home1: "09:30", dayOfWeek: 3, away: "05:30", roomId: 1 },   //dummy
  { home1: "09:30", dayOfWeek: 4, away: "05:30", roomId: 1 },   //dummy
  { home1: "09:30", dayOfWeek: 6, away: "05:30", roomId: 1 }    //dummy

  //room: 2
  { home1: "05:05", dayOfWeek: 1, away: "20:30", roomId: 2 }, //schedules from room1
  { home1: "06:05", dayOfWeek: 5, away: "21:30", roomId: 2 }, //schedules from room1
  { home1: "07:05", dayOfWeek: 7, away: "22:30", roomId: 2 }, //schedules from room1 
  { home1: "09:30", dayOfWeek: 2, away: "05:30", roomId: 2 }, //dummy
  { home1: "09:30", dayOfWeek: 3, away: "05:30", roomId: 2 },//dummy
  { home1: "09:30", dayOfWeek: 4, away: "05:30", roomId: 2 },//dummy
  { home1: "09:30", dayOfWeek: 6, away: "05:30", roomId: 2 }//dummy
]

我尝试了什么

我可以设置第一个虚拟数据时间表的元素。但是不知道如何检查 rooms.schedules 数组中的每个元素

I can set the dummy data from the first element of the schedules. But don't know how to check for every element inside the rooms.schedules array

const dummy = _.first(data.rooms[0].schedules) ? _.first(rooms[0].schedules) : { 'home1': '05:30', 'home2': '09:30', 'away': '17:30', 'sleep': '20:30' }

const finalArray = []
let output = []
for (let room of data.rooms) {
  let days = []
  room.schedules.map(s => days.push(parseInt(s.dayOfWeek)))
  days = new Set(days)
  for(let i = 1; i <= 7; i++) {
    if(!days.has(i)) finalArray.push({ ...obj, dayOfWeek: i, id: room.id })
  }
}


推荐答案

var dummy = { home1: "09:30", away: "05:30" };
var data = {
  rooms: [{
      roomId: 1,
      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: 2,
      schedules: []
    }, {
      roomId: 3,
      schedules: []
    }
  ]
}

var finalArray = [];
var main = data.rooms[0];
for (var day = 1; day < 8; day++) {
  var sch = main.schedules.find(x => x.dayOfWeek == day);
  for (var room of data.rooms) {
    if (room != main || !sch) {
      var temp =  {
          ...{ roomId: room.roomId},
          ...{ home1: dummy.home1, dayOfWeek: day, away: dummy.away }, 
          ...sch           
      };      
      finalArray.push(temp);
    }
  }
}

console.log(finalArray.sort((a, b) => a.roomId - b.roomId));

这篇关于检查嵌套数组中是否存在元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆