全网整合营销服务商

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

免费咨询热线: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 


相关文章: 魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  微信推文制作网站有哪些,怎么做微信推文,急?  实例解析angularjs的filter过滤器  开封网站制作公司,网络用语开封是什么意思?  购物网站制作公司有哪些,哪个购物网站比较好?  如何用腾讯建站主机快速创建免费网站?  小建面朝正北,A点实际方位是否存在偏差?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  如何配置FTP站点权限与安全设置?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  制作企业网站建设方案,怎样建设一个公司网站?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  如何在Windows虚拟主机上快速搭建网站?  宝塔面板创建网站无法访问?如何快速排查修复?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  如何实现建站之星域名转发设置?  建站主机功能解析:服务器选择与快速搭建指南  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  行程制作网站有哪些,第三方机票电子行程单怎么开?  已有域名和空间,如何快速搭建网站?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  淘宝制作网站有哪些,淘宝网官网主页?  深圳网站制作的公司有哪些,dido官方网站?  如何快速搭建高效WAP手机网站吸引移动用户?  Android使用GridView实现日历的简单功能  制作证书网站有哪些,全国城建培训中心证书查询官网?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  公众号网站制作网页,微信公众号怎么制作?  如何通过虚拟主机快速完成网站搭建?  建站之星代理平台如何选择最佳方案?  如何将凡科建站内容保存为本地文件?  如何在云主机快速搭建网站站点?  利用JavaScript实现拖拽改变元素大小  如何通过.red域名打造高辨识度品牌网站?  潮流网站制作头像软件下载,适合母子的网名有哪些?  建站之星免费模板:自助建站系统与智能响应式一键生成  制作宣传网站的软件,小红书可以宣传网站吗?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  定制建站是什么?如何实现个性化需求?  ,巨量百应是干嘛的?  北京企业网站设计制作公司,北京铁路集团官方网站?  如何用景安虚拟主机手机版绑定域名建站?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  如何打造高效商业网站?建站目的决定转化率  如何在云服务器上快速搭建个人网站?  如何通过多用户协作模板快速搭建高效企业网站?  再谈Python中的字符串与字符编码(推荐)  中山网站推广排名,中山信息港登录入口?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么? 

您的项目需求

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