递归循环一维数组,转换成树形数据。
function arrayToTree(data, id) {
// 筛选父级数据
const parentList = data.filter(item => item.parentId === id)
// 判断如果parentList长度为0 代表没有数据 返回一个null做标识 这里可以返回任何值( undefined, 空数组等)
if (parentList.length === 0) {
return null
} else { // 如果有数据
// 进行遍历返回一个新数组 并把结果return出去
return parentList.map(item => {
// 递归再次调用改函数进行循环筛选
const grandItem = arrayToTree(data, item.id)
// 判断是否有子元素 若没有 返回数据的格式为{ 展开后的son }
if (grandItem === null) {
return { ...item }
} else {
// 若有子元素 返回数据的格式为{ 展开后的item, children: grandItem}
return { ...item, children: grandItem }
}
})
}
},