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 相关文章推荐
JavaScript 获取用户客户端操作系统版本
Aug 25 Javascript
高性能web开发 如何加载JS,JS应该放在什么位置?
May 14 Javascript
一步一步制作jquery插件Tabs实现过程
Jul 06 Javascript
jQuery ul标签下拉菜单演示代码
Dec 11 Javascript
ExtJS如何设置与获取radio控件的选取状态
Jan 22 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
Apr 16 Javascript
jQuery结合HTML5制作的爱心树表白动画
Feb 01 Javascript
Eclipse引入jquery报错如何解决
Dec 01 Javascript
JavaScript中的操作符类型转换示例总结
May 30 Javascript
AngularJS实现页面定时刷新
Mar 14 Javascript
关于Layui Table隐藏列问题
Sep 16 Javascript
vue切换菜单取消未完成接口请求的案例
Nov 13 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实现文件安全下载
2006/10/09 PHP
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
PHP 无限级分类
2017/05/04 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
2012/08/22 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
python实现折半查找和归并排序算法
2017/04/14 Python
对numpy中数组元素的统一赋值实例
2018/04/04 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
台湾专柜女包:KINAZ
2019/12/26 全球购物
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
会计毕业生自荐信
2013/11/21 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
微笑面对生活演讲稿
2014/05/13 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
查摆问题自查报告范文
2014/10/13 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书