javascript - Js问题,有一个jsonarray怎么转成多棵树?有没有好的方法
本文介绍了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屋!
查看全文