一、调用es6的方法
let ary = [ 1 , [ 2 , [ 3 , [ 4 , 5 ] ] ] , 6 ]
let str = JSON . stringify ( ary) ;
ary= ary. flat ( Infinity )
ary= str. replace ( / (\[|\]) / g , '' ) . split ( ',' )
ary= ary. map ( Number)
str = str. replace ( / (\[|\]) / g , '' )
str = '[' + str + ']'
ary = JSON . parse ( str)
二、普通递归
let result= [ ]
let fn = function ( ary1 ) {
for ( var i= 0 ; i< ary1. length; i++ ) {
let item= ary1[ i]
if ( Array. isArray ( ary1[ i] ) ) {
fn ( item)
}
else {
result. push ( item)
}
}
return result
}
三、使用reduce函数迭代
let flatten = function ( ary ) {
return ary. reduce ( ( pre, cur ) => {
return pre. concat ( Array. isArray ( cur) ? flatten ( cur) : cur)
} , [ ] )
}
四、利用while循环和some方法
while ( ary. some ( Array. isArray) ) {
ary = [ ] . concat ( ... ary) ;
}