Вложенный JSON
Часть раздела Логика и поток путешествия по JavaScript на Coddy — урок 23 из 65.
JSON-объект может содержать внутри себя другой JSON-объект. Он может иметь неограниченную вложенность. Например:
const userData = {
"user": {
"name": "Kim",
"address": {
"city": "Springfield",
"zip": 12345,
"location": {
"coordinates": {
"latitude": 42.1234,
"longitude": -71.5678
}
}
}
}
}Для доступа к вложенному ключу мы бы написали:
userData.user.name
userData.user.address.location
// И так далееЗадание
ЛегкоСоздайте функцию с именем calculateRestaurantBill, которая принимает в качестве входных данных объект JSON, представляющий заказ в ресторане. Каждый ключ в объекте — это название блюда, а каждое значение — другой объект, содержащий:
- price (число)
- quantity (число)
- isSpecialOffer (логическое значение)
если true, на это блюдо предоставляется скидка 20%. Функция должна:
- Рассчитать общую сумму счета
- Применить все скидки по специальным предложениям
Возвращаемый объект содержит:
- totalBeforeDiscount
- totalDiscount
- finalTotal
(Все значения округляются до 2 знаков после запятой)
Шпаргалка
JSON-объекты могут иметь неограниченную глубину вложенности:
const userData = {
"user": {
"name": "Kim",
"address": {
"city": "Springfield",
"zip": 12345,
"location": {
"coordinates": {
"latitude": 42.1234,
"longitude": -71.5678
}
}
}
}
}Доступ к вложенным свойствам осуществляется с помощью точечной нотации:
userData.user.name
userData.user.address.location
// И так далееПопробуйте сами
function calculateRestaurantBill(order) {
// Напишите код здесь
return {
totalBeforeDiscount: Number(totalBeforeDiscount.toFixed(2)),
totalDiscount: Number(totalDiscount.toFixed(2)),
finalTotal: Number(finalTotal.toFixed(2))
};
}
// Не пишите ничего вне функцииВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и поток
1Строки в деталях
Основы работы со строкамиИтерация по строкамШаблонные литералыМетоды строкИтоги — String Weaver4JSON Часть 2
Итерация по JSONВложенный JSONОпциональная цепочка JSONПоверхностное и глубокое копированиеПовторение — Магазин велосипедовПовторение — Солнечная система7Система управления библиотекой
Обзор проектаДобавление книг10Управление системой фестиваля
Обзор проектаДобавление фильмов и площадок2Многомерные массивы
Основы 2D массивовДоступ к элементам 2D массиваВложенные циклы и 2D массивыПовторение: 2D массивыСложение и вычитание матрицСтупенчатые массивы3D массивы и далееРаспространенные паттерны 2D массивовПовторение: всё о массивах5Множества. Часть 1
Что такое множество?Итерация по множествамДобавление элементаУдаление элементаПроверка наличия элементаРазмер и проверка на пустотуКопирование и очисткаИтоги — Основы множеств8Интересные темы о массивах
Деструктуризация массивовСинтаксис Spread в массивахРазреженные массивыИтоги — Воркшоп по массивам3JSON. Часть 1
Что такое JSON?Проверка наличия ключаМетоды объектовОператор spread. Часть 1Оператор spread. Часть 2Удаление ключейПовторение: манипуляции с ключами JSON