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 ]

你可能感兴趣的:(JavaScript - 数组扁平化)