基于flat
let arr = [ 1 , 2 , [ 3 , 4 , [ 5 , 6 , [ 7 , [ 8 , [ 9 ] , 10 ] , 11 , 12 ] , 13 , 14 , 15 ] , 16 ] , 17 ] ;
console. log ( arr. flat ( Infinity ) )
基于字符串
let arr = [ 1 , 2 , [ 3 , 4 , [ 5 , 6 , [ 7 , [ 8 , [ 9 ] , 10 ] , 11 , 12 ] , 13 , 14 , 15 ] , 16 ] , 17 ] ,
str = arr. toString ( ) . split ( ',' ) ;
arr = str. map ( item => parseInt ( item) ) ;
console. log ( arr)
let arr = [ 1 , 2 , [ 3 , 4 , [ 5 , 6 , [ 7 , [ 8 , [ 9 ] , 10 ] , 11 , 12 ] , 13 , 14 , 15 ] , 16 ] , 17 ] ,
str = JSON . stringify ( arr) . replace ( /(\[|\])/g , '' ) . split ( ',' ) ;
arr = str. map ( item => parseInt ( item) )
console. log ( arr)
基于concat
let arr = [ 1 , 2 , [ 3 , 4 , [ 5 , 6 , [ 7 , [ 8 , [ 9 ] , 10 ] , 11 , 12 ] , 13 , 14 , 15 ] , 16 ] , 17 ] ,
i = 0 ;
for ( ; i < arr. length - 1 ; i++ ) {
if ( Array. isArray ( arr[ i] ) ) {
arr = [ ] . concat ( ... arr)
}
}
console. log ( arr)
递归算法
let arr = [ 1 , 2 , [ 3 , 4 , [ 5 , 6 , [ 7 , [ 8 , [ 9 ] , 10 ] , 11 , 12 ] , 13 , 14 , 15 ] , 16 ] , 17 ] ,
result = [ ] ;
function myFlat ( arr) {
let i = 0 ;
for ( ; i < arr. length; i++ ) {
if ( Array. isArray ( arr[ i] ) ) {
myFlat ( arr[ i] ) ;
continue ;
}
result. push ( arr[ i] )
}
return result
}
console. log ( myFlat ( arr) )