我有一个像这样结构的对象:
[
{
"ID": 34,
"parent": 0,
"title": "Level 1 A",
"children": []
},
{
"ID": 35,
"parent": 0,
"title": "Level 1 B",
"children": [
{
"ID": 36,
"parent": 35,
"title": "Level 2 A",
"children": [
{
"ID": 37,
"parent": 36,
"title": "Level 3 A",
"children": []
},
{
"ID": 38,
"parent": 36,
"title": "Level 3 B",
"children": []
}
]
}
]
}
]
我试图循环并制作"标题"钥匙所以我最终得到了这个:
[
{
"Level 1 A": {
"ID": 34,
"parent": 0,
"title": "Level 1 A",
"children": []
}
},
{
"Level 1 B": {
"ID": 35,
"parent": 0,
"title": "Level 1 B",
"children": [
{
"Level 2 A": {
"ID": 36,
"parent": 35,
"title": "Level 2 A",
"children": [
{
"Level 3 A": {
"ID": 37,
"parent": 36,
"title": "Level 3 A",
"children": []
}
},
{
"Level 3 B": {
"ID": 38,
"parent": 36,
"title": "Level 3 B",
"children": []
}
}
]
}
}
]
}
}
]
我尝试过类似的东西,但它没有通过子数组,所以只有1级元素得到更新:
for (var i = 0, l = response.length; i < l; i++) {
map[response[i].title] = response[i];
}
我相信我需要使用一些递归,但是我无法弄清楚如何使用Javascript完成这项工作。提前感谢任何建议。
答案 0 :(得分:1)
您需要将代码更新为以下
function updateArray(arr) {
var updatedResponse = [];
for (var i = 0, l = arr.length; i < l; i++) {
var obj = {};
if(arr[i].children !== undefined) {
arr[i].children = updateArray(arr[i].children);
}
obj[arr[i].title] = arr[i];
updatedResponse.push(obj);
}
return updatedResponse;
}
var updatedArray = updateArray(response);
答案 1 :(得分:0)
要遍历多维数组,需要多个嵌套的for
循环。
for(var i = 0, l = response.length; i < l; i ++){
for(var j = 0, k = response.length; j < k; j ++){
//Do some code here
}
}
一般规则是对于数组中的每个维度,您需要另一个循环。