【发布时间】:2020-10-06 04:26:36
【问题描述】:
我有一个扁平的对象数组:
let x = [
{parentKeyid: null,children:[]},
{parentKeyid: 0, children:[]},
{parentKeyid: 1, children:[]}
];
我想从这个到嵌套对象数组:
const res = [{
parentKeyid: null,
children: [{
parentKeyid: 0,
children:[{
parentKeyid: 1,
children:[]
}]
}]
}]
这是我的代码:
let x = [{
parentKeyid: null,
children:[]
},
{
parentKeyid: 0,
children:[]
},
{
parentKeyid: 1,
children:[]
}];
function recursively(arr) {
if (arr.length === 1) {
let objToReturn = {
parentKeyid: arr[0].parentKeyid,
children: arr[0].children
}
return objToReturn
}
let transformedArr = arr.splice(0,1);
transformedArr[0].children.push(recursively(arr));
return transformedArr
}
let stringified = JSON.stringify(recursively(x), null, ' ');
console.log(stringified)
正如你所见,我几乎得到了我想要的,但我不知道如何在没有 arr 的情况下将对象推入 children 属性
【问题讨论】:
-
"几乎得到我想要的" - 你发布的 sn-p 似乎有效。你怎么弄错了结果?
-
您的数据中的
id缺失。您只有父 ID,没有其他参考。 -
@Bergi 在我的对象中,其中 parentKeyId 具有 null 属性我的子属性是 [[obj]],我需要 [obj],如果我的 obj 数组变宽,我将得到 [[]]的 []
-
哦,对了。我想你正在寻找
return transformedArr[0]。 -
或者更确切地说是
const objToReturn = arr.shift(); objToReturn.children.push(recursively(arr)); return objToReturn;,以更清楚地表明您不想要“转换后的列表”,而实际上只是数组的第一个元素。
标签: javascript arrays recursion javascript-objects