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