ネストされた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
// などチャレンジ
簡単レストランの注文を表すJSONオブジェクトを引数として受け取る、calculateRestaurantBillという名前の関数を作成してください。オブジェクトの各キーは料理名で、各値は以下の内容を含む別のオブジェクトです:
- 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))
};
}
// 関数の外には何も記述しないでくださいこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。