js樹形結構操作

2021-09-25 06:12:27 字數 1766 閱讀 6905

按照pid分組,分組可以大大減少遞迴次數。。(array分組的最好方式是用物件接收array的項,該物件的key值就是分組憑證)

按照pid和id的匹配 遞迴 已分組的資料。

/**

* array轉樹形結構的演算法

* @params list 代轉化陣列

* @params parentid 起始節點(預設為'0')

* @params pkey 父節點key值。預設pid

* @params ckey 當前節點唯一標誌。預設id

*/export

function

gettrees

(list, parentid =

'0', pkey =

'pid'

, ckey =

'id'

)// 獲取每個節點的直屬子節點,*記住是直屬,不是所有子節點

for(

let i =

0; i < list.length; i++

)else

}return

formattree

(items, parentid, ckey)

}// 利用遞迴格式化每個節點

function

formattree

(items, parentid, ckey)

for(

let t of items[parentid]

) result.

push

(t)}

return result

}

使用深度優先演算法,遞迴按照層級查詢

找到指定節點,返回路徑

/**

* 根據節點值查詢樹形結構中的路徑

* @param value 節點的值

* @param tree 樹形結構

* @param attr 匹配值的屬性

* @param childattr 匹配子節點陣列的屬性

*/export

function

findtreepath

(value, tree, attr =

'id'

, childattr =

'children')if

(tree.length ===0)

return

for(

let i =

0; i < tree.length; i++)if

(item[childattr])}

}return

}/**

* 查詢樹的指定節點

* @param value 節點的值

* @param tree 樹形結構

* @param attr 匹配值的屬性

* @param childattr 匹配子節點陣列的屬性

*/export

function

findtreenode

(value, tree, attr =

'id'

, childattr =

'children')if

(tree.length ===0)

return

for(

let i =

0; i < tree.length; i++)if

(item[childattr])}

}return

null

}

js實現樹形結構

js實現樹形結構 1 html 2 js載入資料 function function loadtree ul thirdli ul li ul li 查詢所有一級節點下的 如果找到,則給 節點中除了最後乙個節點以外的節點加浮動,如果沒有 則給所有的二級加浮動 for var i 0 i parent...

js遞迴生成樹形結構

後端獲取json陣列,成樹結構,下面直接上 首先集合的資料格式是這樣的。資料 生成樹結構 load generateoptions params parent.children this.getchilds param.id,params 獲取子節點 result.push parent retur...

js遍歷樹形結構方法

let nodelist 這個方法比較常見,第一點就是你需要用額外的變數儲存最後的結果,第二點就是可遞迴的條件是當前訪問節點具有子節點,nodelist的children屬性便是記錄了子節點資料,我們不僅要判斷children是否存在,還得判斷children的長度是否為空。在函式中寫上預設值是乙個...