我正在进行这个项目,我需要从我学校的时间表中获取所有空房间,以便从JSON响应中获取数据。
JSON响应如下所示:
{
"status": "success",
"reservations": [
{
"id": "19598",
"subject": "subjectName",
"modifiedDate": "2017-04-24T06:04:42",
"startDate": "2017-04-24T08:00:00",
"endDate": "2017-04-24T09:45:00",
"resources": [
{
"id": "795",
"type": "student_group",
"code": "groupCode",
"name": "groupName"
},
{
"id": "599",
"type": "student_group",
"code": "groupCode",
"name": "groupName"
},
{
"id": "2989",
"type": "realization",
"code": "",
"name": ""
},
{
"id": "41",
"type": "room",
"code": "A340.1",
"parent": {
"id": "2",
"type": "building",
"code": "A",
"name": "buildingA"
},
"name": "A340.1"
}
],
"description": ""
},
{
"id": "27832",
"subject": "subjectName",
"modifiedDate": "2017-04-24T06:04:42",
"startDate": "2017-04-24T08:00:00",
"endDate": "2017-04-24T09:45:00",
"resources": [
{
"id": "52",
"type": "room",
"code": "A450.3",
"parent": {
"id": "2",
"type": "building",
"code": "A",
"name": "buildingA"
},
"name": "A450.3"
},
{
"id": "2409",
"type": "student_group",
"code": "groupCode",
"name": "groupName"
},
{
"id": "3401",
"type": "realization",
"code": "",
"name": ""
}
],
""
},
{
"id": "10945",
"subject": "subjectName",
"modifiedDate": "2017-04-24T06:04:43",
"startDate": "2017-04-24T08:00:00",
"endDate": "2017-04-24T12:00:00",
"resources": [
{
"id": "289",
"type": "student_group",
"code": "groupCode",
"name": "gorupName"
},
{
"id": "2454",
"type": "realization",
"code": "",
"name": ""
},
{
"id": "19",
"type": "room",
"code": "A510.4",
"parent": {
"id": "2",
"type": "building",
"code": "A",
"name": "buildingA"
},
"name": "A510.4"
}
],
"description": ""
},
{
"id": "27647",
"subject": "subjectName",
"modifiedDate": "2017-04-24T06:04:39",
"startDate": "2017-04-24T08:00:00",
"endDate": "2017-04-24T21:00:00",
"resources": [
{
"id": "47",
"type": "room",
"code": "A420.6",
"parent": {
"id": "2",
"type": "building",
"code": "A",
"name": "buildingA"
},
"name": "A420.6"
}
],
"description": ""
},
{
"id": "20630",
"subject": "subjectName",
"modifiedDate": "2017-04-24T06:04:33",
"startDate": "2017-04-24T08:00:00",
"endDate": "2017-04-24T10:45:00",
"resources": [
{
"id": "25",
"type": "room",
"code": "A130.1",
"parent": {
"id": "2",
"type": "building",
"code": "A",
"name": "buildingA"
},
"name": "A130.1"
},
{
"id": "26",
"type": "room",
"code": "A130.3",
"parent": {
"id": "2",
"type": "building",
"code": "A",
"name": "buildingA"
},
"name": "A130.3"
},
{
"id": "2997",
"type": "realization",
"code": "",
"name": ""
},
{
"id": "2268",
"type": "student_group",
"code": "groupCode",
"name": "gorupName"
}
],
"description": ""
},
{
"id": "19874",
"subject": "subjectName",
"modifiedDate": "2017-04-24T06:04:37",
"startDate": "2017-04-24T08:00:00",
"endDate": "2017-04-24T09:45:00",
"resources": [
{
"id": "28",
"type": "room",
"code": "A140.2",
"parent": {
"id": "2",
"type": "building",
"code": "A",
"name": "buildingA"
},
"name": "140.2"
},
{
"id": "3033",
"type": "realization",
"code": "",
"name": ""
},
{
"id": "2338",
"type": "student_group",
"code": "groupCode",
"name": "groupname"
}
],
"description": ""
}
]
}
响应时间要长很多,但为了简单起见,我把它缩短了。
所以我通过JSON.Parse()
和for-loops
运行此JSON响应,以获取当前在阵列中使用的所有房间;
var rooms = [];
for (var i = 0; i < json.reservations.length; i++) {
if(json.reservations[i].resources != null){
for(var j = 0; j < json.reservations[i].resources.length; j++){
var resource = json.reservations[i].resources[j];
if(resource.type === "room"){
if(rooms.indexOf("code"))
rooms.push(resource.code);
}
}
}
}
}
我从当时的回复中可以看到当时正在使用的所有房间;例如
"startDate": "2017-04-24T08:00:00",
"endDate": "2017-04-24T09:45:00",
"type": "room",
"code": "A340.1",
但问题是我正在使用的API目前没有空房间的任何数据,所以我还为buildingA
中的所有房间制作了一个数组,如下所示:
var buildingA = ['A120.3', 'A130.1', 'A130.3', 'A140.1', 'A140.2', 'A140.4', 'A250.1', 'A240.4', 'A240.2', 'A220.5', 'A220.3',
'A220.1', 'A210.2', 'A320.2', 'A320.6', 'A320.7', 'A320.8', 'A340.1', 'A340.2', 'A350.1', 'A350.3', 'A440.5', 'A450.3',
'A450.1', 'A440.4', 'A440.2', 'A420.6', 'A420.5', 'A420.4', 'A420.2', 'A510.2', 'A520.5', 'A510.4', 'A520.6', 'A520.7',
'A540.1', 'A540.2'];
有什么方法可以将这个数组与var rooms = [];
数组进行比较,这样我就可以打印所有空房而不是正在使用的房间?
至于结果,我必须看到空置房间的名称和空置的时间(如果可能的话),但主要的是获得房间名称;
A340.1 - 1 hour 45 minutes
A440.4 - 2 hours
提前致谢。
答案 0 :(得分:1)
基本上,您可以首先收集预订的房间,然后获得完全免费的房间或免费提供。
var data = { status: "success", reservations: [{ id: "19598", subject: "subjectName", modifiedDate: "2017-04-24T06:04:42", startDate: "2017-04-24T08:00:00", endDate: "2017-04-24T09:45:00", resources: [{ id: "795", type: "student_group", code: "groupCode", name: "groupName" }, { id: "599", type: "student_group", code: "groupCode", name: "groupName" }, { id: "2989", type: "realization", code: "", name: "" }, { id: "41", type: "room", code: "A340.1", parent: { id: "2", type: "building", code: "A", name: "buildingA" }, name: "A340.1" }], description: "" }, { id: "27832", subject: "subjectName", modifiedDate: "2017-04-24T06:04:42", startDate: "2017-04-24T08:00:00", endDate: "2017-04-24T09:45:00", resources: [{ id: "52", type: "room", code: "A450.3", parent: { id: "2", type: "building", code: "A", name: "buildingA" }, name: "A450.3" }, { id: "2409", type: "student_group", code: "groupCode", name: "groupName" }, { id: "3401", type: "realization", code: "", name: "" }], description: "" }, { id: "10945", subject: "subjectName", modifiedDate: "2017-04-24T06:04:43", startDate: "2017-04-24T08:00:00", endDate: "2017-04-24T12:00:00", resources: [{ id: "289", type: "student_group", code: "groupCode", name: "gorupName" }, { id: "2454", type: "realization", code: "", name: "" }, { id: "19", type: "room", code: "A510.4", parent: { id: "2", type: "building", code: "A", name: "buildingA" }, name: "A510.4" }], description: "" }, { id: "27647", subject: "subjectName", modifiedDate: "2017-04-24T06:04:39", startDate: "2017-04-24T08:00:00", endDate: "2017-04-24T21:00:00", resources: [{ id: "47", type: "room", code: "A420.6", parent: { id: "2", type: "building", code: "A", name: "buildingA" }, name: "A420.6" }], description: "" }, { id: "20630", subject: "subjectName", modifiedDate: "2017-04-24T06:04:33", startDate: "2017-04-24T08:00:00", endDate: "2017-04-24T10:45:00", resources: [{ id: "25", type: "room", code: "A130.1", parent: { id: "2", type: "building", code: "A", name: "buildingA" }, name: "A130.1" }, { id: "26", type: "room", code: "A130.3", parent: { id: "2", type: "building", code: "A", name: "buildingA" }, name: "A130.3" }, { id: "2997", type: "realization", code: "", name: "" }, { id: "2268", type: "student_group", code: "groupCode", name: "gorupName" }], description: "" }, { id: "19874", subject: "subjectName", modifiedDate: "2017-04-24T06:04:37", startDate: "2017-04-24T08:00:00", endDate: "2017-04-24T09:45:00", resources: [{ id: "28", type: "room", code: "A140.2", parent: { id: "2", type: "building", code: "A", name: "buildingA" }, name: "140.2" }, { id: "3033", type: "realization", code: "", name: "" }, { id: "2338", type: "student_group", code: "groupCode", name: "groupname" }], description: "" }] },
rooms = ['A120.3', 'A130.1', 'A130.3', 'A140.1', 'A140.2', 'A140.4', 'A250.1', 'A240.4', 'A240.2', 'A220.5', 'A220.3', 'A220.1', 'A210.2', 'A320.2', 'A320.6', 'A320.7', 'A320.8', 'A340.1', 'A340.2', 'A350.1', 'A350.3', 'A440.5', 'A450.3', 'A450.1', 'A440.4', 'A440.2', 'A420.6', 'A420.5', 'A420.4', 'A420.2', 'A510.2', 'A520.5', 'A510.4', 'A520.6', 'A520.7', 'A540.1', 'A540.2'],
booking = Object.create(null),
free;
data.reservations.forEach(function (reservation) {
reservation.resources.some(function (resource) {
if (resource.type === 'room') {
booking[resource.code] = booking[resource.code] || [];
booking[resource.code].push({ startDate: reservation.startDate, endDate: reservation.endDate });
return true;
}
});
});
free = rooms.filter(function (a) {
return !booking[a];
});
console.log(booking);
console.log(free);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
答案 1 :(得分:0)
希望以下内容有助于过滤数组。
var vacantRooms = buildingA.filter((x) => {return !rooms.find((y) => {return y == x})});