SOURCE

// 例如将 input 转成output的形式
// let input = [
//     {
//         id: 1, val: '学校', parentId: null
//     }, {
//         id: 2, val: '班级1', parentId: 1
//     }, {
//         id: 3, val: '班级2', parentId: 1
//     }, {
//         id: 4, val: '学生1', parentId: 2
//     }, {
//         id: 5, val: '学生2', parentId: 2
//     }, {
//         id: 6, val: '学生3', parentId: 3
//     },
// ]

// let output = {
//     id: 1,
//     val: '学校',
//     children: [{
//         id: 2,
//         val: '班级1',
//         children: [
//             {
//                 id: 4,
//                 val: '学生1',
//                 children: []
//             },
//             {
//                 id: 5,
//                 val: '学生2',
//                 children: []
//             }
//         ]
//     }, {
//         id: 3,
//         val: '班级2',
//         children: [{
//             id: 6,
//             val: '学生3',
//             children: []
//         }]
//     }]
// }
// // 代码实现
// function arrayToTree(array) {
//     let root = array[0]
//     array.shift()
//     let tree = {
//         id: root.id,
//         val: root.val,
//         children: array.length > 0 ? toTree(root.id, array) : []
//     }
//     return tree;
// }

// function toTree(parenId, array) {
//     let children = []
//     let len = array.length
//     for (let i = 0; i < len; i++) {
//         let node = array[i]
//         if (node.parentId === parenId) {
//             children.push({
//                 id: node.id,
//                 val: node.val,
//                 children: toTree(node.id, array)
//             })
//         }
//     }
//     return children
// }

// console.log(arrayToTree(input))

//扁平化数组
let arr = [1, [2], [1,[3,4], 3], [[1,2,[3,[4,[4,[5,5]]]]]], 1,2,3,[4,4,[3]] ];
// function flatArr(arr, flatResult) {
//     if(!(Array.isArray(arr))) throw new Error('you must input a array');
//     for(let a of arr) {
//         if(!Array.isArray(a)) flatResult.push(a);
//         else flatArr(a, flatResult)
//     }
//     return flatResult;
// }
// console.log(flatArr(arr, []))
//带有深度地扁平化数组
function flatByDep(arr, flatResult, depth) {
    if(!(Array.isArray(arr))) throw new Error('you muit input a arr');
    if(depth == undefined) depth = arr.length
    for(let a of arr) {
        if(Array.isArray(a) && depth > 0) {
            flatByDep(a, flatResult, depth - 1);
        } else flatResult.push(a)
    }
    return flatResult
}
 console.log(flatByDep(arr, [],2))
//使用concact
// while(arr.some(Array.isArray)) {
//     arr = [].concat(...arr)
// }
// console.log(arr)
console 命令行工具 X clear

                    
>
console