Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Object_Tree_Flatten - Fatal编程技术网

Javascript 将展平数组转换为不包含任何父级信息的父子数组

Javascript 将展平数组转换为不包含任何父级信息的父子数组,javascript,arrays,object,tree,flatten,Javascript,Arrays,Object,Tree,Flatten,我在将扁平数组转换为树节点/父子格式数组时遇到了一个问题,我曾想过使用递归解决方案,但我仍然不知道如何实现它。最好的方法是将列表分组,这是从对象项中操作字符串代码的唯一方法。比如01.05 | | 01.05.011 | | 01.05.011.0001 | | 01.05.011.0002 | | | 01.05.011.0003我的目标就是要将这些代码转换成这样: { code: 01, child: [ code : 05, child: [{

我在将扁平数组转换为树节点/父子格式数组时遇到了一个问题,我曾想过使用递归解决方案,但我仍然不知道如何实现它。最好的方法是将列表分组,这是从对象项中操作字符串代码的唯一方法。比如
01.05 | | 01.05.011 | | 01.05.011.0001 | | 01.05.011.0002 | | | 01.05.011.0003
我的目标就是要将这些代码转换成这样:

{
  code: 01,
  child: [
     code : 05,
       child: [{
          code: 011,
          child: [
             {
               code: 0001,
               child:[]
             },
             {
               code: 0002,
               child:[]
             },
              {
               code: 0003,
               child:[]
             }
           ]
       }]
  ]
}


如何解决此问题?

您可以按点拆分字符串,并将每个部分作为嵌套结构的新级别

var数组=['01.05','01.05.011','01.05.011.0001','01.05.011.0002','01.05.011.0003'],
结果=数组。减少((r,s)=>{
s
.split(“.”)
.reduce((子项,代码)=>{
var temp=children.find(o=>o.code==code);
if(!temp)children.push(temp={code,children:[]});
返回临时儿童;
},r);
返回r;
}, []);
控制台日志(结果)
。作为控制台包装{最大高度:100%!重要;顶部:0;}