【发布时间】:2020-08-09 16:28:37
【问题描述】:
我正在尝试以 JSON 的以下顺序访问嵌套属性 productTitle,但是,我只能设法使用
JSON.stringify(orders[i].cart.items, null, 4);
我尝试了嵌套循环,但无济于事。我也试过了
JSON.stringify(orders[i].cart.items.item, null, 4);
这也不起作用。缺少一些基本的东西,我花了几个小时浏览 JSON 文档和教程,但找不到具体的帮助。
[
{
"_id": "5ea5115224bf1f569c4fac96",
"user": "5ea19f4160539d264ca1e7c5",
"cart": {
"items": {
"5e92b488fc3e326b70be262d": {
"item": {
"_id": "5e92b488fc3e326b70be262d",
"productCode": "PROD002",
"productType": "Duvet",
"productTitle": "Kingsize Duvet",
"__v": 0
},
"qty": 1,
"price": 3
},
"5e92f5f9213dc863e0e97682": {
"item": {
"_id": "5e92f5f9213dc863e0e97682",
"productCode": "PROD006",
"productType": "Duvet",
"productTitle": "double-Duvet",
"__v": 0
},
"qty": 2,
"price": 5
}
},
"totalQty": 3,
"totalPrice": 8
},
"address": "London",
"name": "John Cena",
"paymentId": "ch_1Gc2KUIyQsnk8nhOTUR602KW",
"__v": 0
}
]
请温柔,我是新手!
更新: 使用以下迭代设法获取嵌套的键和值: for(var i=0;i
for (var key of Object.keys(orders[i].cart.items)) {
console.log("Title: "+ orders[i].cart.items[key].item.productTitle );
console.log("Quanitity: "+ orders[i].cart.items[key].qty);
console.log(" Price: "+orders[i].cart.items[key].item.productPrice );
console.log(" Subtotal: "+orders[i].cart.items[key].item.productPrice * orders[i].cart.items[key].qty);
console.log("Total Quantity is :"+orders[i].cart.totalQty+" & Total Price: £ " + orders[i].cart.totalPrice);
}
【问题讨论】:
-
不应该
items是item对象的数组吗?在您的 JSON 中,items是一个带有嵌套对象的对象。嵌套对象似乎是id并且还有另一个_id包含相同的值。我认为您打算做的是一个items数组,其中包含包含所有内容的对象。看看那个。 -
另外,这里有两个右括号:
JSON.stringify(orders[i].cart.items, null, 4));也许,您从代码中照原样复制了它,并在另一个函数调用中使用了它。 -
@Azeem 谢谢,是的,额外的括号来自控制台日志。对于两次相同的 ID,我需要有一个与购物车关联的 ID(它可以包含多个产品,每个产品可以添加多次),因此它需要 ID 在购物车内。
-
您确定它是有效的 JSON 并且
i是有效的索引吗? -
好吧,IMO,它应该是一个数组,因为它是
item对象的集合。它将简化 JSON 本身以及遍历和批量处理。否则,您必须提取 ID 以引用每个item对象,然后进行处理/遍历。
标签: javascript json nested-object