检查嵌套数组中是否存在元素 [英] Check the existence of the element inside the nested array
本文介绍了检查嵌套数组中是否存在元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下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屋!
查看全文