Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重新组织对象数组的最佳方法_Javascript_Arrays_Json_Recursion - Fatal编程技术网

Javascript 重新组织对象数组的最佳方法

Javascript 重新组织对象数组的最佳方法,javascript,arrays,json,recursion,Javascript,Arrays,Json,Recursion,我需要重新组织和数组的链接对象的id只有一个树对象。深度级别未知,因此我认为应该递归地进行。最有效的方法是什么 我有下一个对象数组: 康斯特·阿罗布=[ { id:1, 儿童:[ { 身份证号码:2 }, { 身份证号码:3 } ] }, { id:2, 儿童:[ { 身份证号码:4 }, { 身份证号码:5 } ] }, { id:3, 儿童:[ { 身份证号码:6 } ] }, { 身份证号码:4 } ] 我希望为仅具有一个对象(如树)的对象重新构造: 常量treeObj={ id:1, 儿

我需要重新组织和数组的链接对象的id只有一个树对象。深度级别未知,因此我认为应该递归地进行。最有效的方法是什么

我有下一个对象数组:

康斯特·阿罗布=[ { id:1, 儿童:[ { 身份证号码:2 }, { 身份证号码:3 } ] }, { id:2, 儿童:[ { 身份证号码:4 }, { 身份证号码:5 } ] }, { id:3, 儿童:[ { 身份证号码:6 } ] }, { 身份证号码:4 } ] 我希望为仅具有一个对象(如树)的对象重新构造:

常量treeObj={ id:1, 儿童:[ { id:2, 儿童:[ { 身份证号码:4 }, { 身份证号码:5 } ] }, { id:3, 儿童:[ { 身份证号码:6 } ] } ] }
每个对象都有其他许多属性。

您可以对所有子对象使用递归映射函数

const arrObj=[{id:1,子项:[{id:2},{id:3}]},{id:2,子项:[{id:4},{id:5}]},{id:3,子项:[{id:6},{id:4}]; 常数res=arrObj[0]//假设第一个元素是根 res.children=res.children.mapfunction getChildrenobj{ const child=arrObj.findx=>x.id==obj.id; ifchild?.children.children=child.children.mapgetChildren; 返回子对象| | obj; };
console.logres;是的,这是我的第一个解决方案,但我不确定它是否最有效。与节点数相比,该解决方案在线性时间内运行。实际上没有任何方法可以降低时间复杂度,因为总是需要遍历所有节点。