第一种:使用 es6中的flat方法
const arr = [1,[2,[3,[4,5]]],6]
console.log(arr.flat(Infinity))
第二种:使用正则表达式
const arr = [1,[2,[3,[4,5]]],6]
function flatten(arr) {
let arr1 = JSON.stringify(arr).replace( /\[|\]/g ,'')
return JSON.parse('['+arr1+ ']')
}
console.log(flatten(arr));
第三种:使用递归
const arr = [1,[2,[3,[4,5]]],6]
var array=[]
function flatten(arr) {
for(let i=0 ;i<arr.length; i++) {
if(Array.isArray(arr[i])){
flatten(arr[i])
}
else{
array.push(arr[i])
}
}
return array
}
console.log(flatten(arr));
第四种:使用reduce
const arr = [1,[2,[3,[4,5]]],6]
var array=[]
function flatten(arr) {
return arr.reduce((sum,value)=>{
return sum.concat(Array.isArray(value) ? flatten(value) :value)
},[])
}
console.log(flatten(arr));
第五种:使用 …扩展运算符
const arr = [1,[2,[3,[4,5]]],6]
function flat(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
console.log(flat(arr));