数组扁平化的方法

数组扁平化就是把多维数组转为一维数组

递归

1.for循环
遍历数组的每一项,如果不是数组,直接push,如果是数组,继续递归处理

const arr = [1,[2,3],[4,[5,6]]]
function flatten(arr){
    const res = []
    for(let i = 0; i < arr.length; i++){
        if(Array.isArray(arr[i])){
            res.push(...flatten(arr[i]))
            //res = res.concat(flatten(arr[i]))
        }else{
            res.push(arr[i])
        }
    }
    return res
}
flatten(arr)

2.reduce

const arr = [1,[2,3],[4,[5,6]]]
function flatten(arr){
    return arr.reduce((res,cur)=>{
        return res.concat(Array.isArray(cur)?flatten(cur):cur)
    },[])
}
flatten(arr)

...运算符

...运算符可以将二维数组变为一维数组,做一个遍历,若arr中含有数组则使用一次扩展运算符,直至没有为止。

const arr = [1,[2,3],[4,[5,6]]]
function flatten(arr){
    while(arr.some(item => Array.isArray(item))){
        arr = [].concat(...arr)
    }
    return arr
}
flatten(arr)

toString()/join() + split()

如果数组每项都是数字,则可以先将数组转为字符串,再使用split()转为数组

const arr = [1,[2,3],[4,[5,6]]]
function flatten(arr){
    return arr.toString().split(',').map(item => item * 1)
}
flatten(arr)
posted @ 2021-03-06 17:44  炸呼呼er  阅读(164)  评论(0)    收藏  举报