javascript - Js问题,有一个jsonarray怎么转成多棵树?有没有好的方法

查看:83
本文介绍了javascript - Js问题,有一个jsonarray怎么转成多棵树?有没有好的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

`[{

"id": "1",
"parentId": "0",
"nodeName": "公告资讯",

}, {

"id": "2",
"parentId": "1",
"nodeName": "查看公告",

}, {

"id": "4",
"parentId": "0",
"nodeName": "公告资讯",

}, {

"id": "5",
"parentId": "4",
"nodeName": "查看公告",

}, {

"id": "6",
"parentId": "4",
"nodeName": "查看公告1",

}]`
怎么转成
`[{

    "id": "1",
    "parentId": "0",
    "nodeName": "公告资讯",
    children: [{
        "id": "2",
        "parentId": "1",
        "nodeName": "查看公告",
    }]
}, {
    "id": "4",
    "parentId": "0",
    "nodeName": "公告资讯",
    children: [{
        "id": "5",
        "parentId": "4",
        "nodeName": "查看公告",
    }, {
        "id": "6",
        "parentId": "4",
        "nodeName": "查看公告1",
    }]
}`

解决方案

let arr = [{
    "id": "1",
    "parentId": "0",
    "nodeName": "公告资讯",
}, {
    "id": "2",
    "parentId": "1",
    "nodeName": "查看公告",
}, {
    "id": "4",
    "parentId": "0",
    "nodeName": "公告资讯",
}, {
    "id": "5",
    "parentId": "4",
    "nodeName": "查看公告",
}, {
    "id": "6",
    "parentId": "4",
    "nodeName": "查看公告1",
}];
let result = arr.reduce(function(prev, item) {
    prev[item.parentId] ? prev[item.parentId].push(item) : prev[item.parentId] = [item];
    return prev;
}, {});
for (let prop in result) {
    result[prop].forEach(function(item, i) {
        result[item.id] ? item.children = result[item.id] : ''
    });
}
result = result[0];
console.log(JSON.stringify(result))

这篇关于javascript - Js问题,有一个jsonarray怎么转成多棵树?有没有好的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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