javascript - 在控制台中显示 JSON 键

标签 javascript arrays json

我无法在控制台中显示按键(“Apple iPhone 5S”、“Solio Mono Solar Charger”、“24 Month Warranty Package”)。 (基本上,显示每件商品的价格。)

我尝试使用 JSON.parse(cart) 并使用:

var arr = Object.keys(cart.Item).map(function(k) { return cart.Item[k] });

但是控制台只显示这个:

[[object Object] {
  price: 299.99,
  productId: 688,
  url: "http://website.com/phone_iphone5s.html"
}, [object Object] {
  price: 29.95,
  productId: 655,
  url: "http://website.com/solio_charger.html"
}, [object Object] {
  price: 129.95,
  productId: 681,
  url: "http://website.com/24_month_warranty.html"
}]

我确实注意到“Item”被写为对象而不是数组。我应该将对象更改为数组以便“.map”函数起作用吗?

这是我的 JSBin:JSBin

和我的代码:

var arr = Object.keys(cart.Item).map(function(k) { return cart.Item[k] });
// var arrStr = JSON.parse(cart);

// console.log(arrStr);

console.log(arr);
function myCart(){ 
  var myLen = cart.Item.count;
  console.log("Items: " + cart.Items);
  for(var i=0; i<myLen; i++){
    console.log("- " + cart.Item[i] + " (" + cart.Item[i].price + ")");
  }
  console.log("Total: " + cart.Total);
};

myCart();
<小时/>

这是原来的问题:

以以下 JSON 对象为例:

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 函数,以如下所示的确切格式在浏览器控制台中输出商品总数、每个商品的价格以及购物车的总值(value)。代码量越少越好。

注意:JSON 对象只是一个示例。该代码应适用于具有相同结构的任何 JSON 对象,因此请勿使用硬编码 key (“Apple iPhone 5S”、“Solio Mono Solar Charger”、“24 Month Warranty Package”)。

结果:

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

最佳答案

这并不是最少,但您仍然需要至少再添加 2 行来显示购物车中的商品和总计。使用 \r\n 创建断线。

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
},
cartInner = '';

// add total items;
cartInner += 'Items: '+ cart.Items;
// loop through items.
for(var item in cart.Item){
  cartInner += "\r\n"+'- '+ item + ' ($'+ cart.Item[item].price +')';
}
// add total
cartInner += "\r\n"+'Total: '+ cart.Total;
// ouput to console
console.log(cartInner);

关于javascript - 在控制台中显示 JSON 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39196102/

相关文章:

javascript - 为什么 document.getElementById 返回空值?

javascript - 如何在nodejs中添加新 key 后复制2个对象

arrays - 如何创建具有二维或多维数组参数的过程?

javascript - JS 上的 JSON 回复解析

Java - 从 JsonObject 中删除与正则表达式匹配的键

javascript - 制作一个过滤器: Interaction between script and node app

javascript - 如何在html中在小屏幕上显示图像和在大屏幕上显示视频

javascript - 在 Angular 中将对象数组传递给 POST

c - 索引二维矩阵(指针样式)- 错误 : cant index

android - 如何从 webservice 检查天气 JsonArray 值在 android 中是否可用并获取其数据?