來自:https://www.cnblogs.com/niexianda/p/14482157.html 侵刪
先看結果
結果
[
{
"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, } ]