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 相关文章推荐
getComputedStyle与currentStyle获取样式(style/class)
Mar 19 Javascript
Script标签与访问HTML页面详解
Jan 10 Javascript
Window.Open如何在同一个标签页打开
Jun 20 Javascript
jquery通过ajax加载一段文本内容的方法
Jan 15 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
Jan 13 Javascript
Ionic如何实现下拉刷新与上拉加载功能
Jun 03 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
Feb 17 Javascript
jQuery Validate 校验多个相同name的方法
May 18 jQuery
Vue axios 中提交表单数据(含上传文件)
Jul 06 Javascript
vue使用Font Awesome的方法步骤
Feb 26 Javascript
微信小程序实现pdf、word等格式文件上传的方法
Sep 10 Javascript
JavaScript实现10秒后再次获取验证码
Dec 02 Javascript
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 超链接 抓取实现代码
2009/06/29 PHP
php解析字符串里所有URL地址的方法
2015/04/03 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
页面中iframe相互传值传参
2009/12/13 Javascript
jquery图片不完全按比例自动缩小的简单代码
2013/07/29 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
2016/08/25 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
原生js检测页面加载完毕的实例
2018/09/11 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
Python self用法详解
2020/11/28 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
Fossil美国官网:Fossil手表、手袋、珠宝及配件
2017/02/01 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
大三自我鉴定范文
2013/10/05 职场文书
幼儿园开学家长寄语
2014/01/19 职场文书
爱我中华演讲稿
2014/05/20 职场文书
假面舞会策划方案
2014/05/29 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
中学团支部工作总结
2015/08/13 职场文书
宪法宣传标语100条
2019/10/15 职场文书
win10下go mod配置方式
2021/04/25 Golang
python如何为list实现find方法
2022/05/30 Python