javascript - js写一个递归把数据结构重组成另外的结构

查看:496
本文介绍了javascript - js写一个递归把数据结构重组成另外的结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

现在有以下数据结构:

[{
    id: 1,
    pid: 0,
    name: "年级"
}, {
    id: 2,
    pid: 1,
    name: "一年级"
}, {
    id: 3,
    pid: 1,
    name: "二年级"
}, {
    id: 4,
    pid: 0,
    name: "专业"
}, {
    id: 5,
    pid: 4,
    name: "单片机开发"
}]

写一个JS方法,将其转换成以下格式数据:

[{
    id: 1,
    pid: 0,
    name: "年级",
    children: [{
        id: 2,
        pid: 1,
        name: "一年级"
    }, {
        id: 3,
        pid: 1,
        name: "二年级"
    }]
}, {
    id: 4,
    pid: 0,
    name: "专业",
    children: [{
        id: 5,
        pid: 4,
        name: "单片机开发"
    }]
}]

解决方案

var list = [{
    id: 1,
    pid: 0,
    name: "年级"
}, {
    id: 2,
    pid: 1,
    name: "一年级"
}, {
    id: 3,
    pid: 1,
    name: "二年级"
}, {
    id: 4,
    pid: 0,
    name: "专业"
}, {
    id: 5,
    pid: 4,
    name: "单片机开发"
}];

function parseList (list) {
    var map = {};
    list.forEach(function (item) {
        if (!map[item.id]) {
            map[item.id] = item; 
        }
    });
    list.forEach(function (item) {
        if (item.pid != 0) {
            map[item.pid].chidren ? map[item.pid].chidren.push(item) : map[item.pid].chidren = [item];
        }
    });

    return list.filter(function (item) {
        return item.pid === 0;
    });
}

var newList = parseList(list);

这篇关于javascript - js写一个递归把数据结构重组成另外的结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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