javascript数组的扁平化处理
先定义数组和检测是否扁平化
var a = [ 1 , 2 , 3 , [ 4 , 5 , 6 , [ 7 , 8 , 9 ] ] ] ;
let s = ss ( a) ;
s. forEach ( ( v) => {
console. log ( typeof v)
} )
四种方法
基础的循环判断然后递归这个操作
function ss ( arr) {
let array = [ ] ;
for ( let i = 0 ; i< arr. length; i++ ) {
if ( arr[ i] instanceof Array ) {
array = array. concat ( ss ( arr[ i] ) ) ;
} else {
array. push ( arr[ i] ) ;
}
}
return array;
}
reduce和循环,reduce第二个参数为[]; 这里注意reduce使用,数组的reduce函数第一个参数是函数,这个函数有俩参数。reduce函数的第二个参数规定了这个函数的第一个参数的初始值;
function ss ( arr) {
let array = [ ] ;
array = arr. reduce ( ( result, v) => {
if ( v instanceof Array ) {
return result = result. concat ( ss ( v) ) ;
}
else {
return result. concat ( v) ;
}
} , [ ] ) ;
return array;
}
数组的some函数和weile结合
function ss ( arr) {
while ( arr. some ( ( v) => {
return Array. isArray ( v) ;
} ) ) {
arr = [ ] . concat ( ... arr) ;
}
return arr;
}
ES6新方法flat
function ss ( arr) {
return arr. flat ( Infinity )
}
split和toString处理
function flatten(arr){
return arr.toString().split(',')
}
正则和JSON方法共同处理
function flatten(arr){
let str = JSON.stringify(arr)
str = str.replace(/(\[|])/g,'')
str = '['+str+']'
return JSON.parse(str)
}