我希望通过迭代来访问嵌套的JSON对象值。
我尝试了console.log(test[0].Invoice[0].Cost.NO[0]);
,但它无效。
var test = [{
"Invoice": {
"NO": "869",
"$$hashKey": "object:186"
},
"Cost": [{
"NO": 183,
"Amnt": 100
}, {
"NO": 184,
"Amnt": 200
}]
}, {
"Invoice": {
"NO": "698",
"$$hashKey": "object:189"
},
"Cost": [{
"NO": 110,
"Amnt": 150
}, {
"NO": 142,
"Amnt": 263
}]
}];
console.log(test[0].Invoice[0].Cost.NO[0]);

答案 0 :(得分:1)
您的代码console.log(test[0].Invoice[0].Cost.NO[0]);
无效。
由于Invoice
和Cost
是同一级别对象(Cost
未嵌套在Invoice
)。
请查看下面有关如何访问它们的示例。
您需要了解Arrays []和Objects {}。
var test = [{
"Invoice": {
"NO": "869",
"$$hashKey": "object:186"
},
"Cost": [{
"NO": 183,
"Amnt": 100
}, {
"NO": 184,
"Amnt": 200
}]
}, {
"Invoice": {
"NO": "698",
"$$hashKey": "object:189"
},
"Cost": [{
"NO": 110,
"Amnt": 150
}, {
"NO": 142,
"Amnt": 263
}]
}];
// To access COST
console.log(test[0].Cost[0].NO);
// To access Invoice
console.log(test[0].Invoice.NO);
答案 1 :(得分:0)
这是你的JSON:
var test = [{
"Invoice": {
"NO": "869"
},
"Cost": [{
"NO": 183,
"Amnt": 100
}, {
"NO": 184,
"Amnt": 200
}]
}, {
"Invoice": {
"NO": "698"
},
"Cost": [{
"NO": 110,
"Amnt": 150
}, {
"NO": 142,
"Amnt": 263
}]
}];
console.log(test[0].Cost[0].NO);
将是183
如果您不习惯JSON,可以使用console.log(test)
检查开发中的结构。
要进行迭代,您应该使用此处所述的循环:https://www.w3schools.com/jsref/jsref_forEach.asp
简短的例子:
var myFunction = function(item,index){
console.log(item.Cost[0].No);
}
test.forEach(myFunction)
答案 2 :(得分:0)
test
是一个数组,因此您需要迭代它。
每次迭代都会为您提供一个包含2个属性的对象:Invoice
和Cost
Invoice
又是一个对象,因此您只需要访问所需的属性
Cost
是一个数组,因此您需要迭代每个作为对象的项
var test = [{
"Invoice": {
"NO": "869",
"$$hashKey": "object:186"
},
"Cost": [{
"NO": 183,
"Amnt": 100
}, {
"NO": 184,
"Amnt": 200
}]
}, {
"Invoice": {
"NO": "698",
"$$hashKey": "object:189"
},
"Cost": [{
"NO": 110,
"Amnt": 150
}, {
"NO": 142,
"Amnt": 263
}]
}];
test.forEach(t=>{
console.log("Invoice N°: " + t.Invoice.NO);
t.Cost.forEach(c=>{
console.log("- Cost N°: "+ c.NO + " - Amount: " + c.Amnt);
});
});
答案 3 :(得分:0)
你写了错误的陈述
test[0].Invoice[0].Cost.NO[0]
应如下所示
test[0].Cost[0].NO
因为Invoice和Cost是同一json对象的属性。
试试这个
var test = [{ "Invoice": { "NO": "869", "$$hashKey": "object:186" }, "Cost": [{ "NO": 183, "Amnt": 100 }, { "NO": 184, "Amnt": 200 }] }, { "Invoice": { "NO": "698", "$$hashKey": "object:189" }, "Cost": [{ "NO": 110, "Amnt": 150 }, { "NO": 142, "Amnt": 263 }] }];
console.log(test[0].Cost[0]);
console.log(test[0].Cost[0].NO);

答案 4 :(得分:0)
var test = [{ "Invoice": { "NO": "869", "$$hashKey": "object:186" }, "Cost": [{ "NO": 183, "Amnt": 100 }, { "NO": 184, "Amnt": 200 }] }, { "Invoice": { "NO": "698", "$$hashKey": "object:189" }, "Cost": [{ "NO": 110, "Amnt": 150 }, { "NO": 142, "Amnt": 263 }] }];
for (var t in test)
{
var obj = test[t];
console.log(obj.Invoice.NO);
console.log(obj.Invoice.$$hashKey);
for ( var cst in obj.Cost)
{
console.log("Cost Value: " + obj.Cost[cst].NO + " " + obj.Cost[cst].Amnt);
}
}