日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js生成树状结构

發布時間:2023/12/29 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js生成树状结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里給大家介紹幾種使用js將下面的數組生成樹狀結構方法,有不足的地方歡迎大神指正

let cityList = [{id: 1, parentId: 0,name: '江蘇省'},{id: 2,parentId: 0,name: '廣東省'},{id: 3,parentId: 0,name: '湖南省'},{id: 4,parentId: 1,name: '蘇州市'},{id: 5,parentId: 1,name: '無錫市'},{id: 6,parentId: 1,name: '南通市'},{id: 7,parentId: 2,name: '廣州市'},{id: 8,parentId: 2,name: '深圳市'},{id: 9,parentId: 3,name: '長沙市'},{id: 10,parentId: 4,name: '工業園區'},{id: 11,parentId: 4,name: '吳中區'},{id: 12,parentId: 4,name: '姑蘇區'} ];

方法1:

先上我最喜歡的循環方式生成

function listToTree() {let array = []cityList .forEach(item => { // 遍歷對象數組item.children = cityList.filter(info => info.parentId === item.id) // 找到每個對象的子節點 if (item.parentId === 0) {array.push(item) // 將一層節點放入新數組中}})return array //循環結束,返回結果 }

方法2:

使用遞歸方式生成

function recursionGenerateTree(pid, arr) {let array = []arr.forEach(item => {if (item.parentId === pid) {item.children = recursionGenerateTree(item.id, arr) // 接收子節點array.push(item)};})return array // 返回查找到的節點 } console.log(recursionGenerateTree(0, cityList))

ps:以上方法都會改變原數組數據,建議根據使用時先拷貝一份數據。

總結

以上是生活随笔為你收集整理的js生成树状结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。