Как работать с многомерным массивом приходящим в ответ на AJAX запрос?
Пожалуйста помогите! В ответ на AJAX запрос приходит JSON такого вида:
{
"doctors": [
{
"id": 8,
"name": "Сергеев Иван Петрович",
"primary_spec": "Хирург",
"primary_spec_id": "34",
"specs": [
{
"id": "32",
"name": "Аллерголог"
},
{
"id": "34",
"name": "Хирург"
}
],
"schedules": [
{
"id": "2005",
"build_id": "1",
"build_name": "Корпус 1",
"room": "Кабинет № 2",
"address": "ул. Космонавтов, 41",
"kind": "0",
"date": "18.08.2020",
"start": "08:00",
"end": "09:00",
"intervals": [
{
"start": "08:00",
"end": "08:20",
"free": true
},
{
"start": "08:20",
"end": "08:40",
"free": true
},
{
"start": "08:40",
"end": "09:00",
"free": false
}
]
}
]
}
]
}
Не могу понять как пройти циклом и вывести "intervals"[{start}] к примеру списком, если "intervals"[{"free": true}]
Ответы (2 шт):
Автор решения: mego4iter
→ Ссылка
Перебирая по очереди каждый вложенный список
const data = {
"doctors": [
{
"id": 8,
"name": "Сергеев Иван Петрович",
"primary_spec": "Хирург",
"primary_spec_id": "34",
"specs": [
{
"id": "32",
"name": "Аллерголог"
},
{
"id": "34",
"name": "Хирург"
}
],
"schedules": [
{
"id": "2005",
"build_id": "1",
"build_name": "Корпус 1",
"room": "Кабинет № 2",
"address": "ул. Космонавтов, 41",
"kind": "0",
"date": "18.08.2020",
"start": "08:00",
"end": "09:00",
"intervals": [
{
"start": "08:00",
"end": "08:20",
"free": true
},
{
"start": "08:20",
"end": "08:40",
"free": true
},
{
"start": "08:40",
"end": "09:00",
"free": false
}
]
}
]
}
]
}
const schedules = data["doctors"]["schedules"];
for (let k = 0; k < data["doctors"].length; k++)
for (let i = 0; i < data["doctors"][k]["schedules"].length; i++)
for (let j = 0; j < data["doctors"][k]["schedules"][i]["intervals"].length; j++) {
const interval = data["doctors"][k]["schedules"][i]["intervals"][j];
if(interval.free) console.log(interval);
}
Автор решения: Aziz Umarov
→ Ссылка
Ну или в в функциональном стиле.
const data = {
"doctors": [
{
"id": 8,
"name": "Сергеев Иван Петрович",
"primary_spec": "Хирург",
"primary_spec_id": "34",
"specs": [
{
"id": "32",
"name": "Аллерголог"
},
{
"id": "34",
"name": "Хирург"
}
],
"schedules": [
{
"id": "2005",
"build_id": "1",
"build_name": "Корпус 1",
"room": "Кабинет № 2",
"address": "ул. Космонавтов, 41",
"kind": "0",
"date": "18.08.2020",
"start": "08:00",
"end": "09:00",
"intervals": [
{
"start": "08:00",
"end": "08:20",
"free": true
},
{
"start": "08:20",
"end": "08:40",
"free": true
},
{
"start": "08:40",
"end": "09:00",
"free": false
}
]
}
]
}
]
}
const doctors = data.doctors;
doctors.forEach(doctor => doctor.schedules.forEach(schedule => schedule.intervals.forEach(interval => {if (interval.free) console.log(interval)})))