Menu
Coddy logo textTech

JSON imbriqué

Fait partie de la section Logique & Flux du Journey JavaScript de Coddy — leçon 23 sur 65.

Un objet JSON peut contenir un autre objet JSON à l'intérieur. Il peut être imbriqué à l'infini. Par exemple :

const userData = {
  "user": {
    "name": "Kim",
    "address": {
      "city": "Springfield",
      "zip": 12345,
      "location": {
        "coordinates": {
          "latitude": 42.1234,
          "longitude": -71.5678
        }
      }
    }
  }
}

Pour accéder à une clé imbriquée, nous écririons :

userData.user.name
userData.user.address.location
// Et ainsi de suite
challenge icon

Défi

Facile

Créez une fonction nommée calculateRestaurantBill qui prend en entrée un objet JSON représentant une commande de restaurant. Chaque clé de l'objet est le nom d'un plat, et chaque valeur est un autre objet contenant :

  • price (nombre)
  • quantity (nombre)
  • isSpecialOffer (booléen) 

si vrai, il y a une remise de 20 % sur ce plat. La fonction doit :

  1. Calculer le montant total de la facture
  2. Appliquer toutes les remises d'offres spéciales

L'objet retourné contient :

  • totalBeforeDiscount
  • totalDiscount
  • finalTotal

(Toutes les valeurs sont arrondies à 2 décimales)

Aide-mémoire

Les objets JSON peuvent être imbriqués à l'infini :

const userData = {
  "user": {
    "name": "Kim",
    "address": {
      "city": "Springfield",
      "zip": 12345,
      "location": {
        "coordinates": {
          "latitude": 42.1234,
          "longitude": -71.5678
        }
      }
    }
  }
}

Accédez aux propriétés imbriquées en utilisant la notation par point :

userData.user.name
userData.user.address.location
// Et ainsi de suite

Essayez vous-même

function calculateRestaurantBill(order) {
    // Écrivez le code ici
    
    
    return {
        totalBeforeDiscount: Number(totalBeforeDiscount.toFixed(2)),
        totalDiscount: Number(totalDiscount.toFixed(2)),
        finalTotal: Number(finalTotal.toFixed(2))
    };
}
// N'écrivez rien en dehors de la fonction
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux