数组-flat

2022-07-18  本文已影响0人  skoll

描述

flat方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组元素合并为一个新数组返回

语法

let arr=[1,[2,3],[[3,3,3]]]
arr.flat(1)
arr.flat(Infinity)
console.log(arr.flat(Infinity))

细节

1 .不会改变原数组
2 .也需要用一个新数组来返回他
3 .flat会移除数组里面的空项

疑问

1 .一个不知道深度的数组,如何变成1维数组,Infinity
2 .自己实现语法

function* flatten(arr){
    for(const i of arr){
        if(Array.isArray(i)){
            yield* flatten(i)
        }else {
            yield i
        }
    }
}

console.log(arr.flat(Infinity))
console.log([...flatten(arr)])
//这个是最简单的

function flatten2(arr){
    for(const i of arr){
        if(Array.isArray(i)){
            return flatten2(i)
        }else {
            return i
        }
    }
}
//这样递归是完全不行的
上一篇 下一篇

猜你喜欢

热点阅读