Menu
Coddy logo textTech

Verschachteltes JSON

Teil des Abschnitts Logik & Ablauf der JavaScript-Journey von Coddy — Lektion 23 von 65.

Ein JSON-Objekt kann ein weiteres JSON-Objekt in sich enthalten. Es kann unendlich tief verschachtelt sein. Zum Beispiel:

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

Um auf einen verschachtelten Schlüssel zuzugreifen, würden wir schreiben:

userData.user.name
userData.user.address.location
// Und so weiter
challenge icon

Aufgabe

Einfach

Erstellen Sie eine Funktion namens calculateRestaurantBill, die ein JSON-Objekt als Eingabe erhält, das eine Restaurantbestellung darstellt. Jeder Schlüssel im Objekt ist ein Gerichtsname, und jeder Wert ist ein weiteres Objekt, das Folgendes enthält:

  • price (Zahl)
  • quantity (Zahl)
  • isSpecialOffer (Boolean) 

Wenn dieser Wert true ist, gibt es einen Rabatt von 20% auf dieses Gericht. Die Funktion soll:

  1. Die Gesamtrechnung berechnen
  2. Alle Rabatte für Sonderangebote anwenden

Das zurückgegebene Objekt enthält:

  • totalBeforeDiscount
  • totalDiscount
  • finalTotal

(Alle Werte sind auf 2 Dezimalstellen gerundet)

Spickzettel

JSON-Objekte können unendlich tief verschachtelt sein:

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

Greifen Sie auf verschachtelte Eigenschaften mit der Punktnotation zu:

userData.user.name
userData.user.address.location
// Und so weiter

Probier es selbst

function calculateRestaurantBill(order) {
    // Code hier schreiben
    
    
    return {
        totalBeforeDiscount: Number(totalBeforeDiscount.toFixed(2)),
        totalDiscount: Number(totalDiscount.toFixed(2)),
        finalTotal: Number(finalTotal.toFixed(2))
    };
}
// Schreiben Sie nichts außerhalb der Funktion
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf