js将平铺的对象数组转换成树形结构

树形结构常用于省、市、县、区的层级展示,会计科目层级展示,机构树,菜单权限等

转成树形结构的数据中需要包含当前节点id,以及父级节点id---(pid或parentId)

具体实现方法如下:

function treeDataTranslate(data, id = "id", pid = 'parentId') { // console.log("treeDataTranslate---", data); if (data.length === 0) return [] var res = [] var temp = {} for (var i = 0; i < data.length; i++) { // 如果id以010102形式保存,并且没有pid,可以放开下面if语句 // if (data[i].id.length - 2 > 0) { // data[i].pid = data[i].id.substr(0, data[i].id.length - 2) // } temp[data[i][id]] = data[i] } for (var k = 0; k < data.length; k++) { if (temp[data[k][pid]] && data[k][id] !== data[k][pid]) { if (!temp[data[k][pid]]['children']) { temp[data[k][pid]]['children'] = [] } if (!temp[data[k][pid]]['_level']) { temp[data[k][pid]]['_level'] = 1 } data[k]['_level'] = temp[data[k][pid]]._level + 1 temp[data[k][pid]]['children'].push(data[k]) } else { res.push(data[k]) } } // console.log("res---", res, temp); return res }

 


__EOF__

本文作者Hello_World
本文链接https://www.cnblogs.com/yooojoy/p/16138322.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   迷醉的小眼  阅读(1239)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示