先看結果
結果
[
{
"id": 1,
"title": "張三",
"parent_id": -1,
"childs": [
{
"id": 2,
"title": "張小二",
"parent_id": 1,
"childs": [
{
"id": 3,
"title": "張小三",
"parent_id": 2,
"childs": []
}
]
}
]
}
]
再看代碼
方法
/**
* 生成tree
* @param parent_id 父id
*/
const initTree = (parent_id) => {
// jsonArray 變量數據
// 第一次以后:根據id去查詢parent_id相同的(相同為子數據)
// 第一次:查找所有parent_id為-1的數據組成第一級
const child = jsonArray.filter(item => item.parent_id == parent_id)
// 第一次:循環parent_id為-1數組
return child.map(item => ({
...item,
// 當前存在id(id與parent_id應該是必須有的)調用initTree() 查找所有parent_id為本id的數據
// childs字段寫入
childs: initTree(item.id)
}))
}
// 首先調用initTree方法查找所有parent_id為-1的(-1認為是第一級)
const tree = initTree(-1)
console.log(tree)
jsonArray 源數據
[
{
"id": 1, // id,與parent_id關聯
"title": "張三",
"parent_id": -1,//父級id -1為第一級,與id做關聯查詢父子級關系
},
{
"id": 2,
"title": "張小二",
"parent_id": 1,
},
{
"id": 3,
"title": "張小三",
"parent_id": 2,
}
]