【多重数组降维的简单方法】

  今天事情比较轻松,突然看到之前自己遇到的一个问题,就是多重数组的降维去重的做法,刚好最近在看javascript的设计模式这本书,里面介绍了很多面向对象和封装的设计,于是我便自己在编辑器上实践了一下,发现了一个新的方法就是Array.prototype.concat..apply([],arr),之前接触过这个方法的衍生是将伪数组变成真正的数组,就用到了Array.prototype.slice.call(arr)的方法,这里的call和apply都是指向对象的值的做法,在这里都可以组成新的数组,下面是我写的代码:

  

var list = [[1,2,3],[7,8],2,[4,[9]],[3,[6,[3,2]]]];
    var result;
    var isArray = function(data){
      for (var i = 0; i < data.length; i++) {
        if (data[i] instanceof Array) {
          return true;
        }
      }
    }
    var fuc = function(arr){
      return Array.prototype.concat.apply([],arr);
    }
    var arrFuc = function(array){
      if (isArray(array)) {
        arrFuc(fuc(array));
        return;
      }
      result = array;
    }
    arrFuc(list);
    console.log("result",result);

大概的用法是这样操作的,去重就是在最后得到值的基础上用sort方法等等。

posted @ 2017-11-06 17:26  Amylee_style  阅读(674)  评论(0编辑  收藏  举报