多维数组打平字符串形式输出。
多维数组 [1,2,3,[4,5,[6,7,[8],9],10],11,[12,[13]]]
let arr = [1,2,3,[4,5,[6,7,[8],9],10],11,[12,[13]]];
1. join方法
let str = arr.join(',');
console.log(str);// 1,2,3,4,5,6,7,8,9,10,11,12,13
2. toString方法
let str = arr.toString();
console.log(str);// 1,2,3,4,5,6,7,8,9,10,11,12,13
3. 递归遍历最蠢办法
function flat(){
let flatArr = [];
return function flatten(arr){
for(let i = 0; i< arr.length; i++){
Array.isArray(arr[i]) ? flatten(arr[i]):flatArr[arr[i]];
}
return flatArr
}
}
console.log(flat()(arr))
//第二种递归
function flat(arr){
let flatArr = []
arr.forEach((item)=>{
if(Array.isArray(item)){
flatArr = flatArr.concat(flat(item))
}else{
flatArr.push(item)
}
})
return flatArr
}
console.log(flat(arr).toString());
4.reduce 和...展开符
function flat(arr) {
return arr.reduce(( pre, value ) => {
console.log('pre',pre);
return Array.isArray(value) ? [...pre, ...flat(value)] : [...pre, value]
}, [])
}
console.log(flat(arr).toString());
5.concat和apply
function flatten(arr){
while(arr.some(item => Array.isArray(item))){
arr = [].concat.apply([],arr);
}
return arr;
}//
console.log(flatten(arr).toString());