conan1992 / blog

记录下知识点..
3 stars 0 forks source link

2.数组扁平化 #3

Open conan1992 opened 5 years ago

conan1992 commented 5 years ago
let arr = [1, [2, [3, [4, 5]]], 6];

1.方法一是利用es6提供的flat方法:

console.log(arr.flat(Infinity));

2.方法二是利用正则的方法把中括号去除:

console.log(JSON.stringify(arr).replace(/[\[\]]/g, "").split(","))//数字类型被转成字符串类型

3.方法三-递归:

let result = []
var fn = function(arr){
    for(var i=0;i<arr.length;i++){
        if(Array.isArray(arr[i])){
            fn(arr[i])
        }else{
            result.push(arr[i])
        }
    }
}
fn(arr)
console.log( result )

4.方法四-扩展运算符:

while(arr.some(Array.isArray)){
    arr=[].concat(...arr)
}
console.log(arr)

5方法五-利用reduce迭代,类似递归方法:

function fn(arr){
    return arr.reduce((acc, cur)=>{
        return acc.concat(Array.isArray(cur)?fn(cur):cur)
    }, [])
}
console.log(fn(arr))