概述

递归循环一维数组,转换成树形数据。

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 }
            }
        })
    }
},