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 @   ycyzharry  阅读(954)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示