javascript - 平铺的json转树结构的json,请看数据
PHP中文网
PHP中文网 2017-04-11 11:28:12
[JavaScript讨论组]
{
    "name": "paragraph",
    "fullName": "paragraph",
    "description": "",
    "varType": "paragraph",
    "type": 4,
    "sampleIndex": 0
}, {
    "name": "$intf",
    "fullName": "paragraph.$intf",
    "description": "",
    "varType": "string",
    "type": 2,
    "sampleIndex": 0
}, {
    "name": "$mtu",
    "fullName": "paragraph.$mtu",
    "description": "",
    "varType": "int",
    "type": 1,
    "sampleIndex": 0
}, {
    "name": "$bw",
    "fullName": "paragraph.$bw",
    "description": "",
    "varType": "int",
    "type": 1,
    "sampleIndex": 0
}, {
    "name": "SubParagraph",
    "fullName": "paragraph.SubParagraph",
    "description": "",
    "varType": "paragraph",
    "type": 4,
    "sampleIndex": 0
}, {
    "name": "$subId",
    "fullName": "paragraph.SubParagraph.$subId",
    "description": "",
    "varType": "string",
    "type": 2,
    "sampleIndex": 0
}

利用fullName表示的关系,一个 . 代表一级
如何将上面的数据转换成类似下面的格式:

{
    name: "bgp_rid",
    type: "single",
    draggable: true
}, {
    name: "bgp_nbrs",
    type: "table",
    children: [{
        name: "bgp_rid1",
        type: "single",
        draggable: true
    }, {
        name: "bgp_nbrs1",
        type: "table",
        draggable: true
    }, {
        name: "bgp_nbrs1",
        type: "interface_table",
        children: [{
            name: "bgp_rid1",
            type: "single",
            draggable: true
        }, {
            name: "bgp_nbrs1",
            type: "table",
            draggable: true,
            children: [{
                name: "bgp_rid1",
                type: "single",
                draggable: true
            }, {
                name: "bgp_nbrs1",
                type: "table",
                draggable: true
            }]
        }]
    }]
}
PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
阿神

这个好像能用

var arr = [{
    'name': 'paragraph',
    'fullName': 'paragraph',
    'description': '',
    'varType': 'paragraph',
    'type': 4,
    'sampleIndex': 0
}, {
    'name': '$intf',
    'fullName': 'paragraph.$intf',
    'description': '',
    'varType': 'string',
    'type': 2,
    'sampleIndex': 0
}, {
    'name': '$mtu',
    'fullName': 'paragraph.$mtu',
    'description': '',
    'varType': 'int',
    'type': 1,
    'sampleIndex': 0
}, {
    'name': '$bw',
    'fullName': 'paragraph.$bw',
    'description': '',
    'varType': 'int',
    'type': 1,
    'sampleIndex': 0
}, {
    'name': 'SubParagraph',
    'fullName': 'paragraph.SubParagraph',
    'description': '',
    'varType': 'paragraph',
    'type': 4,
    'sampleIndex': 0
}, {
    'name': '$subId',
    'fullName': 'paragraph.SubParagraph.$subId',
    'description': '',
    'varType': 'string',
    'type': 2,
    'sampleIndex': 0
}];

var result = arr.reduce(function(previous, item) {
    var levels = item.fullName.split('.');
    if (levels.length === 1) {
        item.children = [];
        previous.push(item);
    } else {
        levels
            .reduce(function(p, level) {
                var found = p.find(it => it.name === level);
                if (!found) {
                    return p;
                }
                if (!found.children) {
                    found.children = [];
                }
                return found.children;
            }, previous)
            .push(item);
    }
    return previous;
}, []);

console.log(result);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号