1. 程式人生 > 實用技巧 >JavaScript:使用遞迴構建樹型選單

JavaScript:使用遞迴構建樹型選單

使用遞迴函式將扁平資料轉為樹型結構,並渲染到頁面

效果圖:

程式碼:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>遞迴函式處理資料</title>
</head>

<body>
  <div class="nav" style="background-color: pink;">
  </div>
  <script>
    var
data = [ { id: 1, name: '衣服', pid: 0 }, { id: 2, name: '褲子', pid: 0 }, { id: 3, name: '外套', pid: 1 }, { id: 4, name: '短褲', pid: 2 }, { id: 5, name: '風衣', pid: 3 } ] function filterArray(data, parent){ let temp = [] for (let i = 0; i < data.length; i++) {
if (data[i].pid === parent) { temp.push(data[i]) data[i].children = filterArray(data, data[i].id) //返回值是一個數組,又賦值給data[i].children } } return temp } let tree=filterArray(data,0) let nav = document.querySelector('.nav'); function setDomTree(data, node) { let ul
for (let i = 0; i < data.length; i++) { ul = document.createElement('ul') let li = document.createElement('li') li.innerHTML = data[i].name node.appendChild(ul) ul.appendChild(li) if (data[i].children.length !== 0) { let element = setDomTree(data[i].children, ul) ul.appendChild(element) } } return ul } setDomTree(tree,nav) </script> </body> </html>