JSON anidado
Parte de la sección Lógica y Flujo del Journey de JavaScript de Coddy — lección 23 de 65.
Un objeto JSON puede contener otro objeto JSON en su interior. Puede estar anidado infinitamente. Por ejemplo:
const userData = {
"user": {
"name": "Kim",
"address": {
"city": "Springfield",
"zip": 12345,
"location": {
"coordinates": {
"latitude": 42.1234,
"longitude": -71.5678
}
}
}
}
}Para acceder a una clave anidada escribiríamos:
userData.user.name
userData.user.address.location
// Y así sucesivamenteDesafío
FácilCrea una función llamada calculateRestaurantBill que reciba como entrada un objeto JSON que represente el pedido de un restaurante. Cada clave en el objeto es el nombre de un plato, y cada valor es otro objeto que contiene:
- price (número)
- quantity (número)
- isSpecialOffer (booleano)
si es true, hay un descuento del 20% en ese plato. La función debe:
- Calcular la cuenta total
- Aplicar cualquier descuento por oferta especial
El objeto devuelto contiene:
- totalBeforeDiscount
- totalDiscount
- finalTotal
(Todos los valores se redondean a 2 decimales)
Hoja de referencia
Los objetos JSON pueden anidarse infinitamente:
const userData = {
"user": {
"name": "Kim",
"address": {
"city": "Springfield",
"zip": 12345,
"location": {
"coordinates": {
"latitude": 42.1234,
"longitude": -71.5678
}
}
}
}
}Accede a las propiedades anidadas utilizando la notación de puntos:
userData.user.name
userData.user.address.location
// Y así sucesivamentePruébalo tú mismo
function calculateRestaurantBill(order) {
// Escribe el código aquí
return {
totalBeforeDiscount: Number(totalBeforeDiscount.toFixed(2)),
totalDiscount: Number(totalDiscount.toFixed(2)),
finalTotal: Number(finalTotal.toFixed(2))
};
}
// No escribas nada fuera de la funciónEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Strings en profundidad
Fundamentos de stringsIterar sobre stringsTemplate LiteralsMétodos de stringsResumen - String Weaver4JSON Parte 2
Iterar sobre JSONJSON anidadoEncadenamiento opcional en JSONCopia superficial y profundaResumen - Tienda de bicicletasResumen - Sistema solar7Sistema de Gestión de Biblioteca
Descripción general del proyectoAñadir libros10Gestionar el sistema del festival
Descripción general del proyectoAñadir películas y sedes2Arreglos multidimensionales
Conceptos básicos de arreglos 2DAcceso a elementos de arreglos 2DBucles anidados con arreglos 2DResumen - Arreglos 2DSuma y resta de matricesArreglos irregulares (Jagged Arrays)Arreglos 3D y más alláPatrones comunes en arreglos 2DResumen - Todo sobre arreglos5Conjuntos Parte 1
¿Qué es un conjunto?Iterar sobre conjuntosAñadir un elementoEliminar un elementoComprobar si un elemento existeTamaño y Is EmptyCopy y ClearResumen - Conceptos básicos de conjuntos8Temas interesantes de Arrays
Desestructuración de ArraysSintaxis Spread en ArraysArrays dispersosResumen - Taller de Arrays3JSON Parte 1
¿Qué es un JSON?Comprobar si existe una claveMétodos de objetoEl Spread Operator Parte 1El Spread Operator Parte 2Eliminar clavesResumen - Manipular claves de JSON