本文介绍了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小时内与您取得联系。