二维数组转一维

1
2
3
4
5
let data = [[1,2,3],[1,2,3],[1,2,3]];
let res = [];
data.forEach(item => {
    item.forEach? item.forEach(val =>{res.push(val)}) :res.push(item)
})
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
let data = [[1,2,3],[1,2,3],[1,2,3]];
let res = [];

var falt = (res) => {
    if(res.forEach){
        res.forEach(val => {
            val.forEach ? falt(val) : res.push(val)
        })
    }else{
        res.push(res)
    }
}

常规操作 for of 递归实现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    function flatten(arr, result = []) {
          for (let item of arr) {
            if (Array.isArray(item.children))
              flatten(item.children, result)
            else
              result.push(item)
          }
          return result
    }

迭代器实现

生成器实现

reduce 三句话实现法

降维打击法

lodash 层次法

参考感谢 https://www.jianshu.com/p/b1fb3434e1f5