多维数组扁平化的方法尝试

816 阅读1分钟

多维数组打平字符串形式输出。

多维数组 [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());