Menu
Coddy logo textTech

중첩된 JSON

Coddy JavaScript 여정의 논리 & 흐름 섹션에 포함된 레슨 — 65개 중 23번째.

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

(모든 값은 소수점 둘째 자리까지 반올림됩니다)

치트 시트

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실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 & 흐름의 모든 레슨