数据结构
let arr = [
{ id: 1, name: '一级1', parentId: 0 },
{ id: 2, name: '一级2', parentId: 0 },
{ id: 3, name: '二级1', parentId: 1 },
{ id: 4, name: '二级2', parentId: 1 },
{ id: 5, name: '二级3', parentId: 2 },
{ id: 6, name: '二级3', parentId: 3 },
]
arr数据处理成newArr数据
let newArr数据 = [
{
id: 1, name: '一级1', parentId: 0,
children: [
{
id: 3, name: '二级1', parentId: 1,
children: [
{ id: 6, name: '二级3', parentId: 3 }
]
},
{ id: 4, name: '二级2', parentId: 1 }
]
},
{
id: 2, name: '一级2', parentId: 0,
children: [
{ id: 5, name: '二级3', parentId: 2 }
]
}
]
判断id和parentId相等,如果相等parentId就是他的孩子``
let newArray = []
arr.forEach(res => {
if (res.parentId === 0) {
newArray.push(res)
}
})
this.arrToTree(arr, newArray)
function arrToTree(list, newArray) {
newArray.forEach(res => {
list.forEach((ret, index) => {
if (res.id === ret.parentId) {
if (!res.children) {
res.children = [];
};
res.children.push(ret);
}
})
if (res.children) {
this.arrToTree(list, res.children);
}
})
}