我有这样的数组:
var jsonObj = {
"name": "my boards",
"children": [
{
"name": "AAA",
"children": [
{
"name": "AAA_2",
"size": 422
},
{
"name": "AAA_2",
"size": 422
},
{
"name": "AAA_2",
"size": 422
}
]
},
{
"name": "BBB",
"children": [
{
"name": "BBB_2",
"size": 422
},
{
"name": "BBB_2",
"size": 422
},
{
"name": "BBB_2",
"size": 422
}
]
},
{
"name": "CCC",
"children": [
{
"name": "CCC_2",
"size": 422
},
{
"name": "CCC_2",
"size": 422
},
{
"name": "CCC_2",
"size": 422
}
]
}
]
}
我想用jquery用divs中的值填充这个对象。我想我得到的点和括号错了。我正在尝试这个:
function fill_object() {
$.each($('.my_div'), function() {
jsonObj.children["name"] = $(this.id).value();
jsonObj.children.children["name"] = $(this.id).value();
});
return (jsonObj)
}
但是我收到以下错误:
Uncaught TypeError: Cannot read property 'children' of undefined
我希望能够为AAA,AAA_2,BBB,BBB_2,CCC和CCC_2添加值
答案 0 :(得分:1)
正如您在评论中提到的那样,这就是您所寻求的(因为我不确定您的要求,所以没有回答)
所以问题是你需要像
这样的嵌套循环for(var i = 0; i < jsonObj.children.length; i++) {
console.log(jsonObj.children[i].name); //outputs name
for(var j = 0; j < jsonObj.children[i].children.length; j++) {
console.log(jsonObj.children[i].children[j].name); //outputs nested children names
}
}
在这里,首先循环jsonObj.children
,之后,我正在嵌套另一个for
循环来迭代嵌套数组,该数组还包含name
作为键的对象。
您可以通过执行类似
的操作在此处进行小规模优化for(var i = 0, l = jsonObj.children.length; i < l; i++)
因此,我们只计算length
array
一次。您可以为嵌套循环执行相同的操作。