javascript - Js问题,有一个jsonarray怎么转成多棵树?有没有好的方法
天蓬老师
天蓬老师 2017-04-11 11:33:46
[JavaScript讨论组]

`[{

"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",
    }]
}`
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(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))
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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