全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

 本文介绍了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 


相关文章: 建站之星免费模板:自助建站系统与智能响应式一键生成  宝塔建站无法访问?如何排查配置与端口问题?  如何通过西部数码建站助手快速创建专业网站?  如何用VPS主机快速搭建个人网站?  免费视频制作网站,更新又快又好的免费电影网站?  活动邀请函制作网站有哪些,活动邀请函文案?  详解jQuery停止动画——stop()方法的使用  如何正确下载安装西数主机建站助手?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  C++如何使用std::optional?(处理可选值)  家具网站制作软件,家具厂怎么跑业务?  Swift中循环语句中的转移语句 break 和 continue  如何通过VPS建站无需域名直接访问?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  高性价比服务器租赁——企业级配置与24小时运维服务  建站之星后台密码遗忘?如何快速找回?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  山东网站制作公司有哪些,山东大源集团官网?  定制建站是什么?如何实现个性化需求?  建站主机功能解析:服务器选择与快速搭建指南  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何通过免费商城建站系统源码自定义网站主题与功能?  常州自助建站工具推荐:低成本搭建与模板选择技巧  如何选择高效响应式自助建站源码系统?  制作公司内部网站有哪些,内网如何建网站?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  Swift开发中switch语句值绑定模式  建站主机如何选?性能与价格怎样平衡?  网站专业制作公司有哪些,做一个公司网站要多少钱?  javascript中的try catch异常捕获机制用法分析  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何在云服务器上快速搭建个人网站?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  如何选择网络建站服务器?高效建站必看指南  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  javascript中对象的定义、使用以及对象和原型链操作小结  如何快速搭建响应式可视化网站?  郑州企业网站制作公司,郑州招聘网站有哪些?  Python文件管理规范_工程实践说明【指导】  如何有效防御Web建站篡改攻击?  Java解压缩zip - 解压缩多个文件或文件夹实例  建站之星如何实现网站加密操作?  如何通过多用户协作模板快速搭建高效企业网站?  深圳网站制作的公司有哪些,dido官方网站?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  建站之星如何实现五合一智能建站与营销推广?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。