Menu
Coddy logo textTech

JSON Aninhado

Parte da seção Lógica & Fluxo do Journey de JavaScript da Coddy — lição 23 de 65.

Um objeto JSON pode conter outro objeto JSON dentro dele. Ele pode ser aninhado infinitamente. Por exemplo:

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

Para acessar uma chave aninhada, escreveríamos:

userData.user.name
userData.user.address.location
// E assim por diante
challenge icon

Desafio

Fácil

Crie uma função chamada calculateRestaurantBill que recebe um objeto JSON representando um pedido de restaurante como entrada. Cada chave no objeto é o nome de um prato, e cada valor é outro objeto contendo:

  • price (número)
  • quantity (número)
  • isSpecialOffer (booleano) 

se for true, há um desconto de 20% naquele prato. A função deve:

  1. Calcular o valor total da conta
  2. Aplicar quaisquer descontos de ofertas especiais

O objeto retornado contém:

  • totalBeforeDiscount
  • totalDiscount
  • finalTotal

(Todos os valores são arredondados para 2 casas decimais)

Folha de consulta

Objetos JSON podem ser aninhados infinitamente:

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

Acesse propriedades aninhadas usando a notação de ponto:

userData.user.name
userData.user.address.location
// E assim por diante

Experimente você mesmo

function calculateRestaurantBill(order) {
    // Escreva o código aqui
    
    
    return {
        totalBeforeDiscount: Number(totalBeforeDiscount.toFixed(2)),
        totalDiscount: Number(totalDiscount.toFixed(2)),
        finalTotal: Number(finalTotal.toFixed(2))
    };
}
// Não escreva nada fora da função
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo