JS数组交集、并集、差集的示例代码

发布时间 - 2026-01-11 02:55:11    点击率:

 本文介绍了JS数组交集、并集、差集,分享给大家,具体如下:

由于下面会用到ES5的方法,低版本会存在兼容,先应添加对应的polyfill

Array.prototype.indexOf = Array.prototype.indexOf || function (searchElement, fromIndex) {
  var index = -1;
  fromIndex = fromIndex * 1 || 0;
  for (var k = 0, length = this.length; k < length; k++) {
    if (k >= fromIndex && this[k] === searchElement) {
      index = k;
      break;
    }
  }
  return index;
};

Array.prototype.filter = Array.prototype.filter || function (fn, context) {
  var arr = [];
  if (typeof fn === "function") {
    for (var k = 0, length = this.length; k < length; k++) {
      fn.call(context, this[k], k, this) && arr.push(this[k]);
    }
  }
  return arr;
};

依赖数组去重方法:

// 数组去重
Array.prototype.unique = function() {
  var n = {}, r = [];
  for (var i = 0; i < this.length; i++) {
    if (!n[this[i]]) {
      n[this[i]] = true;
      r.push(this[i]); 
    }
  }
  return r;
}

交集

交集元素由既属于集合A又属于集合B的元素组成

Array.intersect = function(arr1, arr2) {
  if(Object.prototype.toString.call(arr1) === "[object Array]" && Object.prototype.toString.call(arr2) === "[object Array]") {
    return arr1.filter(function(v){ 
     return arr2.indexOf(v)!==-1 
    }) 
  }
}
// 使用方式
Array.intersect([1,2,3,4], [3,4,5,6]); // [3,4]

并集

并集元素由集合A和集合B中所有元素去重组成

Array.union = function(arr1, arr2) {
  if(Object.prototype.toString.call(arr1) === "[object Array]" && Object.prototype.toString.call(arr2) === "[object Array]") {
    return arr1.concat(arr2).unique()
  }
}
// 使用方式
Array.union([1,2,3,4], [1,3,4,5,6]); // [1,2,3,4,5,6]

差集

A的差集:属于A集合不属于B集合的元素

B的差集:属于B集合不属于A集合的元素

Array.prototype.minus = function(arr) {
  if(Object.prototype.toString.call(arr) === "[object Array]") {
    var interArr = Array.intersect(this, arr);// 交集数组
    return this.filter(function(v){
      return interArr.indexOf(v) === -1
    })
  }
}
// 使用方式
var arr = [1,2,3,4];
arr.minus([2,4]); // [1,3]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# JS数组交集  # 并集  # 差集  # js  # 交集并集差集  # JS计算两个数组的交集、差集、并集、补集(多种实现方式)  # JavaScript获取两个数组交集的方法  # JavaScript获取多个数组的交集简单实例  # js取两个数组的交集|差集|并集|补集|去重示例代码  # JavaScript实现两个数组的交集  # 不属于  # 给大家  # 大家多多  # fromIndex  # var  # searchElement  # function  # indexOf  # gt  # amp  # lt  # index  # length  # polyfill  # pre  # nbsp 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Windows Hello人脸识别突然无法使用  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  如何做网站制作流程,*游戏网站怎么搭建?  教学论文网站制作软件有哪些,写论文用什么软件 ?  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  使用spring连接及操作mongodb3.0实例  如何在Windows服务器上快速搭建网站?  免费网站制作appp,免费制作app哪个平台好?  青岛网站建设如何选择本地服务器?  在centOS 7安装mysql 5.7的详细教程  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  JavaScript常见的五种数组去重的方式  Laravel Session怎么存储_Laravel Session驱动配置详解  Swift开发中switch语句值绑定模式  如何在VPS电脑上快速搭建网站?  如何在新浪SAE免费搭建个人博客?  如何在云主机快速搭建网站站点?  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  如何在IIS中新建站点并配置端口与IP地址?  Android中AutoCompleteTextView自动提示  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  独立制作一个网站多少钱,建立网站需要花多少钱?  Laravel如何创建自定义Artisan命令?(代码示例)  Laravel如何实现本地化和多语言支持?(i18n教程)  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  如何在阿里云高效完成企业建站全流程?  中山网站推广排名,中山信息港登录入口?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何在 React 中条件性地遍历数组并渲染元素  历史网站制作软件,华为如何找回被删除的网站?  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  佛山网站制作系统,佛山企业变更地址网上办理步骤?  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  详解vue.js组件化开发实践  Python正则表达式进阶教程_复杂匹配与分组替换解析  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  教你用AI将一段旋律扩展成一首完整的曲子  javascript基于原型链的继承及call和apply函数用法分析  大连 网站制作,大连天途有线官网?  如何为不同团队 ID 动态生成多个“认领值班”按钮