Извлечение значений / ключей объекта JSON без использования жестко закодированных ключей с использованием Javascript

 cart = {
 "Items": 3,
 "Item": {
      "Apple iPhone 5S": {
              "productId": 688,
              "url": "http://website.com/phone_iphone5s.html",
              "price": 299.99
        },
      "Solio Mono Solar Charger": {
              "productId": 655,
              "url": "http://website.com/solio_charger.html",
              "price": 29.95
        },
       "24 Month Warranty Package": {
              "productId": 681,
              "url": "http://website.com/24_month_warranty.html",
              "price": 129.95
        }
  },
"Total": 459.89
 }

Я хочу написать функцию JavaScript, которая выводит общее количество элементов, каждого элемента с ценой и общую стоимость корзины покупок в консоли инструментов разработчика браузера. Например: нужно выбрать Apple Iphone 5S и его цену, Solio Mono Solar Charger, его цену и т. Д. Без использования жестко закодированных клавиш (например, "Apple iPhone 5S", "Solio Mono Solar Charger"). Там в любом случае??

Возможно ли получить в этом формате??

   Items: 3 
    - Apple iPhone 5S ($299.99) 
    - Solio Mono Solar Charger ($29.95) 
    - 24 Month Warranty Package ($129.95)
   Total: 459.89 

2 ответа

Решение

Ты ищешь что-то подобное

var str = `Items: ${cart.Items} `;
Object.keys(cart.Item).forEach((key) => {
  str += `- ${key} (${cart.Item[key].price}) `
})

str +=  `Total: ${cart.Total}`
console.log(str)

var cart = {
  "Items": 3,
  "Item": {
    "Apple iPhone 5S": {
      "productId": 688,
      "url": "http://website.com/phone_iphone5s.html",
      "price": 299.99
    },
    "Solio Mono Solar Charger": {
      "productId": 655,
      "url": "http://website.com/solio_charger.html",
      "price": 29.95
    },
    "24 Month Warranty Package": {
      "productId": 681,
      "url": "http://website.com/24_month_warranty.html",
      "price": 129.95
    }
  },
  "Total": 459.89
}


var str = `Items: ${cart.Items} `;
Object.keys(cart.Item).forEach((key) => {
  str += `- ${key} (${cart.Item[key].price}) `
})

str +=  `Total: ${cart.Total}`
console.log(str)

Вы можете просмотреть их и получить нужные данные, как это.

Вы можете отредактировать его так, чтобы оно соответствовало всем, что вам нужно.

cart = {
 "Items": 3,
 "Item": {
      "Apple iPhone 5S": {
              "productId": 688,
              "url": "http://website.com/phone_iphone5s.html",
              "price": 299.99
        },
      "Solio Mono Solar Charger": {
              "productId": 655,
              "url": "http://website.com/solio_charger.html",
              "price": 29.95
        },
       "24 Month Warranty Package": {
              "productId": 681,
              "url": "http://website.com/24_month_warranty.html",
              "price": 129.95
        }
  },
"Total": 459.89
 }

for (var key in cart.Item) {
    if (cart.Item.hasOwnProperty(key)) {
        console.log(key + " " + cart.Item[key]);
    }
}
Другие вопросы по тегам