需要轉換為樹形的數組
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