我的JSON数据:
var menu = {"parent":[
{
"id": 1,
"name": "Information",
"child": [
{
"id": 1000,
"name": "Example"
}
]
},
{
"id": 2,
"name": "Something"
},
{
"id": 3,
"name": "Something else",
"child": [
{
"id": 2000,
"name": "Yay"
}
]
}
我的JavaScript:
$(document).ready(function () {
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://sable-belief-1704.justapis.io/parentmenu", false);
xhr.send();
var responseJson = JSON.parse(xhr.response);
var responseParent = responseJson.parent;
for(var i in responseParent) {
if (responseParent[i].hasOwnProperty('child'))
{
console.log(responseParent[i]);
console.log(responseParent[i].child[i]);
}
}
});
我被困在这里。此代码适用于具有子对象的第一个对象。但是当它循环到具有子对象的第二个对象时,它将运行第一个console.log并且我可以看到我的父对象上有子对象,但由于一些奇怪的原因,在第二个console.log上我在哪里#39;我试图记录子对象,它只会返回undefined。当我记录父对象时,考虑到子对象存在,这对我来说似乎很奇怪。
这是一个JSFiddle,您可以运行以查看我的意思:https://jsfiddle.net/4rcy66r7/
有什么想法吗?
答案 0 :(得分:4)
此:
console.log(responseParent[i]);
console.log(responseParent[i].child[i]);
^^^
您对两个完全独立的数组使用相同的索引。所有这些child
数组中只包含 ONE 对象,始终位于索引0
,但您正在尝试索引[1],[2],[3],等......根本就不存在。
应该是
console.log(responseParent[i].child[0]);
^---
代替。