js 多维数组扁平化操作

fhjddfdfdf在实际项目开发中数组结构的数据多不胜数,有的时候多维数组需要扁平化处理展开变成一维数组,下面介绍3种方法.

方法一:ES6 中Flat()

flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。

如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数

const arr=[1,2,[3,4]]
console.log(arr.flat())
//[1,2,3,4]
const arr=[1, 2, [3, [4, 5]]]
arr.flat(Infinity)
//[1,2,3,4,5]

方法二: JSON.stringify(),replace,JSON.parse()

const arr=[1,2,[3,4,[5,6,7]]];
let res=JSON.stringify(arr).replace(/\[|\]/g,'');
res=JSON.parse(`[${res}]`)
console.log(res)
//[1, 2, 3, 4, 5, 6, 7]

方法三: reduce递归 

function flatten(arr){
    return arr.reduce((pre,cur)=>{
        return pre.concat(Array.isArray(cur)?flatten(cur):cur)
    },[])
}

const arr=[1,2,[3,4,[5,6,7]]];
flatten(arr)
//[1,2,3,4,5,6,7]

猜你喜欢

转载自blog.csdn.net/qq_38902432/article/details/126192673