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 相关文章推荐
详细讲解JS节点知识
Jan 31 Javascript
js如何设置在iframe框架中指定div不显示
Dec 04 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
Jun 05 Javascript
jQuery 仿百度输入标签插件附效果图
Jul 04 Javascript
深入理解javascript变量声明
Nov 20 Javascript
基于jquery的手风琴图片展示效果实现方法
Dec 16 Javascript
JavaScript生成随机字符串的方法
Mar 19 Javascript
javascript事件委托的用法及其好处简析
Apr 04 Javascript
React Native如何消除启动时白屏的方法
Aug 08 Javascript
vue.js路由跳转详解
Aug 28 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
Jun 18 Javascript
Vue如何获取数据列表展示
Dec 11 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删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
php 错误处理经验分享
2011/10/11 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
2016/10/31 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
JavaScript toFixed() 方法
2010/04/15 Javascript
js导出table数据到excel即导出为EXCEL文档的方法
2013/10/10 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
Python中subprocess模块用法实例详解
2015/05/20 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
Python列表切片操作实例总结
2019/02/19 Python
python3注册全局热键的实现
2020/03/22 Python
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
职业生涯规划怎么写
2013/12/29 职场文书
法律进机关实施方案
2014/03/12 职场文书
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
典型事迹材料范文
2014/12/29 职场文书
泰山导游词
2015/02/02 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
2015年五四青年节演讲稿
2015/03/18 职场文书
实习证明模板
2015/06/16 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
php解析非标准json、非规范json的方式实例
2022/05/10 PHP
JAVA springCloud项目搭建流程
2022/05/11 Java/Android
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers