js目錄樹結構過濾路徑

var data = [
  {
    name: '紅色集團總部',
    userName: '劉備',
    id: 1,
    children: [
      {
        name: '紅色集團分部1',
        userName: '劉備兒子1',
        id: 5,
        children: [
          {
            name: '紅色最小分部',
            userName: '劉備最小兒子',
            id: 14
          }
        ]
      },
      {
        name: '紅色集團分部2',
        userName: '劉備兒子2',
        id: 6
      }
    ]
  },
  {
    name: '黃色集團總部',
    userName: '張飛',
    id: 2,
    children: [
      {
        name: '黃色集團分部1',
        userName: '張飛兒子1',
        id: 7
      },
      {
        name: '黃色集團分部2',
        userName: '張飛兒子2',
        id: 8,
        children: [
          {
            name: '黃最小部',
            userName: '張飛最小兒子',
            id: 15
          }
        ]
      }
    ]
  },
  {
    name: '藍色集團總部',
    userName: '沙僧',
    id: 3,
    children: [
      {
        name: '藍色集團分部1',
        userName: '沙僧兒子1',
        id: 9,
        children: [
          {
            name: '藍色小小分部1',
            userName: '沙僧小小兒子1',
            id: 16
          }
        ]
      },
      {
        name: '藍色集團總部2',
        userName: '沙僧兒子2',
        id: 10
      },
      {
        name: '藍色集團總部3',
        userName: '沙僧兒子3',
        id: 11,
        children: [
          {
            name: '藍色小小分部2',
            userName: '沙僧小小兒子2',
            id: 17
          }
        ]
      }
    ]
  },
  {
    name: '綠色集團總部',
    userName: '孫悟空',
    id: 4,
    children: [
      {
        name: '綠色孫悟空',
        userName: '孫悟空兒子1',
        id: 12,
        children: [
          {
            name: '綠色孫悟空66',
            userName: '孫悟空最最兒子',
            id: 18
          }
        ]
      },
      {
        name: '綠色金庫咒',
        userName: '孫悟空兒子2',
        id: 13
      }
    ]
  }
]

function getPathById(data, id) {
  let arr = [], // 操作數(shù)組
    res = [], // 結果  AND 是否匹配到
    run = true // 運行

  // data 解析
  data.map(e => {
    arr.push({
      pid: e.id,
      children: [e],
      nextFnTag: true // 下一個函數(shù)的起點標識
    })
  })

  /**
   * 組查詢 (無狀態(tài)函數(shù))
   * @e{Array} 下一個元素
   */
  function getPath(item) {
    console.log(item)
    if (!run) return
    // 截取段落
    item.nextFnTag && (res = [])

    if (typeof item.id !== 'undefined') res.push(item.id)

    if (item.id === id) run = false
    // 下一級查詢
    if (item.children && item.children.length) item.children.map(getPath)
  }

  arr.map(getPath)

  return res
}

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容