Menu
Coddy logo textTech

ネストされたJSON

CoddyのJavaScriptジャーニー「論理とフロー」セクションの一部 — レッスン 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
// など
challenge icon

チャレンジ

簡単

レストランの注文を表すJSONオブジェクトを引数として受け取る、calculateRestaurantBillという名前の関数を作成してください。オブジェクトの各キーは料理名で、各値は以下の内容を含む別のオブジェクトです:

  • price (数値)
  • quantity (数値)
  • isSpecialOffer (真偽値) 

もし true の場合、その料理には20%の割引が適用されます。この関数は以下の処理を行う必要があります:

  1. 合計請求額を計算する
  2. スペシャルオファーの割引を適用する

返されるオブジェクトには以下が含まれます:

  • 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))
    };
}
// 関数の外には何も記述しないでください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン