js实现数组去重、交集、差集、并集

var a = [1, 2, 3, 4, 5];
var b = [3, 4, 6, 7];
var c = [2, 8, 5, 0, 5, 2, 6, 7, 2];
      
      //去重
      function listRemoveRepeat(c) {
        var result = [];
        for (var i = 0; i < c.length; i++) {
          var flag = true;
          var temp = c[i];
          for (var j = i+1; j < c.length; j++) {
            if (temp === c[j]) {
              flag = false;
              break;
            }
          }
          if (flag) {
            result.push(temp);
          }
        }
        return result;
      }
     
      //交集
      function listIntersection(a, b) {
        var result = [];
        for (var i = 0; i < b.length; i++) {
          var temp = b[i];
          for (var j = 0; j < a.length; j++) {
            if (temp === a[j]) {
              result.push(temp);
              break;
            }
          }
        }
        return result;
      }


       //差集:所有属于a且不属于b的元素组成的集合
      function listDifference(a, b) {
        var clone = a.slice(0);
        for (var i = 0; i < b.length; i++) {
          var temp = b[i];
          for (var j = 0; j < clone.length; j++) {
            if (temp === clone[j]) {
              clone.splice(j, 1);
            }
          }
        }
        return listRemoveRepeat(clone);
      }
      
      //并集
      function listUnion(a, b) {
        return listRemoveRepeat(a.concat(b));
      }
  
    

      console.log("去重", listRemoveRepeat(c));
      console.log("交集", listIntersection(a, b));
      console.log("差集", listDifference(a, b));
      console.log("并集", listUnion(a, b));

结果如下:

 

另外,关于去重,还可以使用indexOf方法:

      //去重
      function listRemoveRepeat(c){
        var result=[];
        for (var i = 0; i < c.length; i++) {
         if(result.indexOf(c[i])==-1){
          result.push(c[i]);
        }
      }
      return result;
    }

 

posted @ 2018-12-06 18:46  ycyzharry  阅读(968)  评论(0)    收藏  举报