JavaScript中数组扁平化

问题:什么是数组扁平化?

就是将一个嵌套多层的数组转换为只有一层的数组。
例如:[1,[2,[3,[4,5]]]]扁平化即为:[1, 2, 3, 4, 5]

1.for循环递归 (利用for循环数组元素,要是数组元素为数组则就递归调用)

    var array = [1,[2,[3,[4,5]]]]
    function flatten(array){
      var result = [];
      for(var i=0; i<array.length; i++){
        if(array[i] instanceof Array){
          result = result.concat(flatten(array[i]));
        }else{
          result.push(array[i])
        }
      }
      return result;
    }
    console.log(flatten(array)) //[1, 2, 3, 4, 5]

2. 利用toString (将需要扁平化的数组调用toString方法转为字符串,然后调用split转为数组)

    var array = [1,[2,[3,[4,5]]]];
    function flatten(array){
      return array.toString().split(',').map( item => +item)
    }
    console.log(flatten(array))  //[1, 2, 3, 4, 5]

3. 利用ES6新增扩展运算符(注意:扩展运算符只可以扁平一层)

    var array = [1,[2,[3,[4,5]]]];
    function flatten(array){
      while(array.some( item => Array.isArray(item) )){
        array = [].concat(...array);
      }
      return array;
    }
    console.log(flatten(array)) //[1, 2, 3, 4, 5]

你可能感兴趣的:(JavaScript)