javascript - js数据格式转换问题!求帮忙!

查看:74
本文介绍了javascript - js数据格式转换问题!求帮忙!的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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

[
    {
        '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'
            }
        ]
    }
]

这个问题已被关闭,原因:问题质量差 - 问题太水、伸手党

解决方案

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"}]}]

这篇关于javascript - js数据格式转换问题!求帮忙!的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆