js取两个数组的交集|差集|并集|补集|去重示例代码


Posted in Javascript onAugust 07, 2013
/** 
* each是一个集合迭代函数,它接受一个函数作为参数和一组可选的参数 
* 这个迭代函数依次将集合的每一个元素和可选参数用函数进行计算,并将计算得的结果集返回 
{%example 
<script> 
var a = [1,2,3,4].each(function(x){return x > 2 ? x : null}); 
var b = [1,2,3,4].each(function(x){return x < 0 ? x : null}); 
alert(a); 
alert(b); 
</script> 
%} 
* @param {Function} fn 进行迭代判定的函数 
* @param more ... 零个或多个可选的用户自定义参数 
* @returns {Array} 结果集,如果没有结果,返回空集 
*/ 
Array.prototype.each = function(fn){ 
fn = fn || Function.K; 
var a = []; 
var args = Array.prototype.slice.call(arguments, 1); 
for(var i = 0; i < this.length; i++){ 
var res = fn.apply(this,[this[i],i].concat(args)); 
if(res != null) a.push(res); 
} 
return a; 
}; /** 
* 得到一个数组不重复的元素集合<br/> 
* 唯一化一个数组 
* @returns {Array} 由不重复元素构成的数组 
*/ 
Array.prototype.uniquelize = function(){ 
var ra = new Array(); 
for(var i = 0; i < this.length; i ++){ 
if(!ra.contains(this[i])){ 
ra.push(this[i]); 
} 
} 
return ra; 
}; 
/** 
* 求两个集合的补集 
{%example 
<script> 
var a = [1,2,3,4]; 
var b = [3,4,5,6]; 
alert(Array.complement(a,b)); 
</script> 
%} 
* @param {Array} a 集合A 
* @param {Array} b 集合B 
* @returns {Array} 两个集合的补集 
*/ 
Array.complement = function(a, b){ 
return Array.minus(Array.union(a, b),Array.intersect(a, b)); 
}; 
/** 
* 求两个集合的交集 
{%example 
<script> 
var a = [1,2,3,4]; 
var b = [3,4,5,6]; 
alert(Array.intersect(a,b)); 
</script> 
%} 
* @param {Array} a 集合A 
* @param {Array} b 集合B 
* @returns {Array} 两个集合的交集 
*/ 
Array.intersect = function(a, b){ 
return a.uniquelize().each(function(o){return b.contains(o) ? o : null}); 
}; 
/** 
* 求两个集合的差集 
{%example 
<script> 
var a = [1,2,3,4]; 
var b = [3,4,5,6]; 
alert(Array.minus(a,b)); 
</script> 
%} 
* @param {Array} a 集合A 
* @param {Array} b 集合B 
* @returns {Array} 两个集合的差集 
*/ 
Array.minus = function(a, b){ 
return a.uniquelize().each(function(o){return b.contains(o) ? null : o}); 
}; 
/** 
* 求两个集合的并集 
{%example 
<script> 
var a = [1,2,3,4]; 
var b = [3,4,5,6]; 
alert(Array.union(a,b)); 
</script> 
%} 
* @param {Array} a 集合A 
* @param {Array} b 集合B 
* @returns {Array} 两个集合的并集 
*/ 
Array.union = function(a, b){ 
return a.concat(b).uniquelize(); 
};
Javascript 相关文章推荐
Jquery Uploadify上传带进度条的简单实例
Feb 12 Javascript
JavaScript错误处理
Feb 03 Javascript
JavaScript对Cookie进行读写操作实例
Jul 25 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
Jan 23 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
Oct 28 Javascript
jQuery中Chosen三级联动功能实例代码
Mar 07 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
Jul 12 Javascript
Angular 1.x个人使用的经验小结
Jul 19 Javascript
vue中本地静态图片路径写法
Mar 06 Javascript
vue结合Echarts实现点击高亮效果的示例
Mar 17 Javascript
JavaScript Canvas编写炫彩的网页时钟
Oct 16 Javascript
vue表单验证之禁止input输入框输入空格
Dec 03 Vue.js
js使浏览器窗口最大化实现代码(适用于IE)
Aug 07 #Javascript
javascript一元操作符(递增、递减)使用示例
Aug 07 #Javascript
js 实现 input type=&quot;file&quot; 文件上传示例代码
Aug 07 #Javascript
uploadify在Firefox下丢失session问题的解决方法
Aug 07 #Javascript
firefox浏览器不支持innerText的解决方法
Aug 07 #Javascript
javascript的内存管理详解
Aug 07 #Javascript
javaScript函数中执行C#代码中的函数方法总结
Aug 07 #Javascript
You might like
php使用curl获取https请求的方法
2015/02/11 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
修复ie8&amp;chrome下window的resize事件多次执行
2011/10/20 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
微信小程序 toast 详解及实例代码
2016/11/09 Javascript
常用的几个JQuery代码片段
2017/03/13 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python实现拼接多张图片的方法
2014/12/01 Python
python搭建虚拟环境的步骤详解
2016/09/27 Python
利用Python如何生成便签图片详解
2018/07/09 Python
python实现自动解数独小程序
2019/01/21 Python
python logging模块的使用总结
2019/07/09 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
Pytorch模型转onnx模型实例
2020/01/15 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
幼儿教师培训感言
2014/03/08 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
实习科室评语
2015/01/04 职场文书
党校学习个人总结
2015/02/15 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书