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]