首页 > Web开发 > 详细

js Array to Tree

时间:2020-01-15 19:05:59      阅读:142      评论:0      收藏:0      [点我收藏+]
source = [{
                id: 1,
                pid: 0,
                name: ‘body‘
            }, {
                id: 2,
                pid: 1,
                name: ‘title‘
            }, {
                id: 3,
                pid: 2,
                name: ‘div‘
            }]
            转换为: [{
                        id: 1,
                        pid: 0,
                        name: ‘body‘,
                        children: [{
                                id: 2,
                                pid: 1,
                                name: ‘title‘,
                                children: [{
                                    id: 3,
                                    pid: 1,
                                    name: ‘div‘
                                }]
                            }
                        }]

 

技术分享图片
<!DOCTYPE html>
<html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=`, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>toTree</title>
    </head>

    <body>
        <script>
            var source = [{
                id: 1,
                pid: 0,
                name: ‘body‘
            }, {
                id: 2,
                pid: 1,
                name: ‘title‘
            }, {
                id: 3,
                pid: 1,
                name: ‘div‘
            }, {
                id: 4,
                pid: 3,
                name: ‘span‘
            }, {
                id: 5,
                pid: 3,
                name: ‘icon‘
            }, {
                id: 6,
                pid: 4,
                name: ‘subspan‘
            }]

            function toTree(data) {
                let result = []
                if(!Array.isArray(data)) {
                    return result
                }
                data.forEach(item => {
                    delete item.children;
                });
                let map = {};
                data.forEach(item => {
                    map[item.id] = item;
                });
                data.forEach(item => {
                    let parent = map[item.pid];
                    if(parent) {
                        (parent.children || (parent.children = [])).push(item);
                    } else {
                        result.push(item);
                    }
                });
                return result;
            }
            console.log(toTree(source))
        </script>
    </body>

</html>
解决办法

js Array to Tree

原文:https://www.cnblogs.com/JKHao/p/12198050.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!