我无法在控制台中显示按键(“Apple iPhone 5S”,“Solio Mono太阳能充电器”,“24个月保修套装”)。 (基本上,用价格显示每个项目。)
我尝试使用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函数,以完整的格式输出项目总数,每个项目的价格以及购物车的总价值,如下所示。代码量越少越好。
注意:JSON对象只是一个示例。代码应该适用于具有相同结构的任何JSON对象,因此不要使用硬编码密钥(“Apple iPhone 5S”,“Solio Mono Solar Charger”,“24个月保修包”)。
结果:
Items: 3
- Apple iPhone 5S ($299.99)
- Solio Mono Solar Charger ($29.95)
- 24 Month Warranty Package ($129.95)
Total: 459.89
答案 0 :(得分: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);
&#13;
答案 1 :(得分:1)
类似的东西:
var arr = Object.keys(cart.Item).map(function(k) {
return k + " ($" + cart.Item[k].price + ")";
});
您之前只是输出了对象。如果要输出具有特定格式的特定字符串,则需要显式形成返回以反映该特定字符串。