javascript - js数据格式转换问题!求帮忙!
PHPz
PHPz 2017-04-11 11:59:53
[JavaScript讨论组]

求各位帮帮忙,如何转换如下的两种类型的数据格式?

[
    {
        'name': 'level-1',
        'value': 'eve-1',
        'id': 'id-1',
        'parentId': null
    }, {
        'name': 'level-2',
        'value': 'eve-2',
        'id': 'id-2',
        'parentId': 'id-1'
    }, {
        'name': 'level-3',
        'value': 'eve-3',
        'id': 'id-3',
        'parentId': 'id-2'
    }, {
        'name': 'level-3',
        'value': 'eve-4',
        'id': 'id-4',
        'parentId': 'id-2'
    }, {
        'name': 'level-2',
        'value': 'eve-5',
        'id': 'id-5',
        'parentId': 'id-1'
    }
]

转换为:

[
    {
        'name': 'level-1',
        'value': 'eve-1',
        'id': 'id-1',
        'children': [
            {
                'name': 'level-2',
                'value': 'eve-2',
                'id': 'id-2',
                'children': [
                    {
                        'name': 'level-3',
                        'value': 'eve-3',
                        'id': 'id-3'
                    }, {
                        'name': 'level-3',
                        'value': 'eve-4',
                        'id': 'id-4'
                    }
                ]
            }, {
                'name': 'level-2',
                'value': 'eve-5',
                'id': 'id-5'
            }
        ]
    }
]
PHPz
PHPz

学习是最好的投资!

全部回复(1)
怪我咯
let arr = [{
        'name': 'level-1',
        'value': 'eve-1',
        'id': 'id-1',
        'parentId': null
    }, {
        'name': 'level-2',
        'value': 'eve-2',
        'id': 'id-2',
        'parentId': 'id-1'
    }, {
        'name': 'level-3',
        'value': 'eve-3',
        'id': 'id-3',
        'parentId': 'id-2'
    }, {
        'name': 'level-3',
        'value': 'eve-4',
        'id': 'id-4',
        'parentId': 'id-2'
    }, {
        'name': 'level-2',
        'value': 'eve-5',
        'id': 'id-5',
        'parentId': 'id-1'
    }];




    let result = arr.reduce(function(prev, item) {
        let insert = {
            name: item.name,
            value: item.value,
            id: item.id
        }
        prev[item.parentId] ? prev[item.parentId].push(insert) : prev[item.parentId] = [insert];
        return prev;
    }, {});
    for (let prop in result) {
        result[prop].forEach(function(item, i) {
            result[item.id] ? item.children = result[item.id] : ''
        });
    }


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

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