我需要重新安排我的JSON数组中的下列方式。在输出中,我需要id
为重点和对象本身,因为它的价值。需要重新安排JSON
输入:
[
{
"id": "1",
"sub": [
{
"id": "1-1",
"sub": [
{
"id": "1-1-1",
"sub": []
}
]
},
{
"id": "1-2",
"sub": []
}
]
},
{
"id": "2",
"sub": []
},
{
"id": "3",
"sub": [
{
"id": "3-1",
"sub": []
}
]
}
]
输出:
{
"1": {
"id": "1",
"sub": {
"1-1": {
"id": "1-1",
"sub": {
"1-1-1": {
"id": "1-1-1",
"sub": []
}
}
},
"1-2": {
"id": "1-2",
"sub": []
}
}
},
"2": {
"id": "2",
"sub": []
},
"3": {
"id": "3",
"sub": {
"3-1": {
"id": "3-1",
"sub": []
}
}
}
}
我与递归尝试它,但它正在创建循环对象。
function rearrange(obj){
obj[obj.id] = obj;
for(var j = 0; j < obj.sub.length; j++){
obj.sub[j][obj.sub[j].id] = obj.sub[j];
if(obj.sub[j].sub.length > 0){
rearrange(obj.sub[j]);
}
}
}
//调用
rearrange(myobj);
输出,我建议创建一个新的普通对象并遍历您的JSON,并在新的对象创建所需的结构而不是试图“更新”输入对象。你真的没有断裂语句进行递归函数 –