js 數組 轉為樹形結構

需要轉換為樹形的數組

 var data = [
         {
            "orderById":null,
            "platformCommissionProportion":1,
            "name":"添加劑",
            "pid":13,
            "id":26,
            "state":"1"
        },
        {
            "orderById":null,
            "platformCommissionProportion":1,
            "name":"藥食同源",
            "pid":13,
            "id":25,
            "state":"1"
        },
        {
            "orderById":null,
            "platformCommissionProportion":1,
            "name":"特殊食品",
            "pid":13,
            "id":24,
            "state":"1"
        },
        {
            "orderById":null,
            "platformCommissionProportion":1,
            "name":"進口食品",
            "pid":13,
            "id":23,
            "state":"1"
        },
        {
            "orderById":null,
            "platformCommissionProportion":1,
            "name":"新資源食品",
            "pid":13,
            "id":22,
            "state":"1"
        },
        {
            "orderById":null,
            "platformCommissionProportion":1,
            "name":"綠色有機",
            "pid":13,
            "id":21,
            "state":"1"
        },
        {
            "orderById":null,
            "platformCommissionProportion":1,
            "name":"食品檢驗檢測",
            "pid":12,
            "id":20,
            "state":"1"
        },
        {
            "orderById":null,
            "platformCommissionProportion":1,
            "name":"標簽審核",
            "pid":11,
            "id":19,
            "state":"1"
        },
        {
            "orderById":null,
            "platformCommissionProportion":1,
            "name":"法律服務",
            "pid":3,
            "id":18,
            "state":"1"
        },
        {
            "orderById":null,
            "platformCommissionProportion":1,
            "name":"案件咨詢",
            "pid":3,
            "id":17,
            "state":"1"
        },
        {
            "orderById":null,
            "platformCommissionProportion":1,
            "name":"食品餐飲許可",
            "pid":2,
            "id":16,
            "state":"1"
        }
    ]

轉換方法

/**
 * 樹形數據轉換
 * @param {*} data
 * @param {*} id
 * @param {*} pid
 */
export function treeDataTranslate (data, id = 'id', pid = 'pid') {
  var res = []
  var temp = {}
  for (var i = 0; i < data.length; i++) {
    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])
    }
  }
  return res
}

使用方法

// 引入上方的方法
import { treeDataTranslate } from '@/utils/myUtils'

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

友情鏈接更多精彩內容