JavaScript - 数组扁平化

1.Array.prototype.flat()

  • flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
console.log([1,[1,2],[[12,3],[32,4]]].flat(3));// [ 1, 1, 2, 12, 3, 32, 4 ]

2.递归判断是否是数组

function flat(arr){
    let result = [];          
    for(let i of arr){
        if(Array.isArray(i)){
            result = result.concat(flat(i));
        }else{
            result.push(i);
        }
    } 
    return result;
}
console.log(flat([1,[1,2],[[12,3],[32,4]]]));// [ 1, 1, 2, 12, 3, 32, 4 ]

3.reduce()

function flat(arr){
    return arr.reduce((prev,cur)=>{
        return prev.concat(Array.isArray(cur)?flat(cur):cur);
    },[]);
}
console.log(flat([1,[1,2],[[12,3],[32,4]]]));// [ 1, 1, 2, 12, 3, 32, 4 ]

4.针对数组元素全部为数字时可以使用toString()

function flat(arr){
    return  arr.toString().split(',').map((i)=>{
        return i = +i;
    });
}
console.log(flat([1,[-1,2],[[-12,3],[32,4]]]));// [ 1, -1, 2, -12, 3, 32, 4 ]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容