Javascript Array in Array 转 树结构

发布于 2022-09-13 01:27:47 字数 514 浏览 9 评论 0

有一组数据

[
      [
         path1,
         path2,
         file1.txt
      ],
      [
         path1,
         file2.txt
      ],
      [
         file3.txt
      ]
]

想转成树结构

[
   {
     name: path1,
     children: [
        name: path2,
        children: [
            name: file1.txt
        ]
     ]
   },
   {
     name: path1,
     children: [
        name: file2.txt
     ]
   },
   {
     name: file3.txt
   }

]

求js 写法

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

习ぎ惯性依靠 2022-09-20 01:27:47
var list = [
    [
        'path1',
        'path2',
        'file1.txt'
    ],
    [
        'path1',
        'file2.txt'
    ],
    [
        'file3.txt'
    ]
];
function transform(arr) {
    var ret = [];
    for (var i = 0; i < arr.length; ++i) {
        var _arr = arr[i];
        var obj = {}, _obj = obj;
        for (var j = 0; j < _arr.length; ++j) {
            var path = _obj.name = _arr[j];
            if (path.indexOf(".") < 0) {
                _obj = _obj.children = {};
            }
        }
        ret.push(obj);
    }
    return ret;
}
console.dir(transform(list));
无风消散 2022-09-20 01:27:47

按顺序来构造树形的。

let list = [
    [
        'path1',
        'path2',
        'file1.txt'
    ],
    [
        'path1',
        'file2.txt'
    ],
    [
        'file3.txt'
    ]
];
let arrToTree = (paths)=>Object.assign({name:paths.shift()},paths.length ?{children:[arrToTree(paths)]} : {});

list.map(paths=>arrToTree(paths));

结果

[{"name":"path1","children":[{"name":"path2","children":[{"name":"file1.txt"}]}]},{"name":"path1","children":[{"name":"file2.txt"}]},{"name":"file3.txt"}]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文