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和CSS速查手册
Aug 20 Javascript
js限制checkbox选中个数以限制六个为例
Jul 15 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
Sep 02 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
Mar 31 Javascript
javascript模拟评分控件实现方法
May 13 Javascript
JavaScript中字面量与函数的基本使用知识
Oct 20 Javascript
原生js实现放大镜
Feb 20 Javascript
Vuejs 组件——props数据传递的实例代码
Mar 07 Javascript
JS实现的加减乘除四则运算计算器示例
Aug 09 Javascript
react-router v4如何使用history控制路由跳转详解
Jan 09 Javascript
JavaScript 中的 this 工作原理
Jun 20 Javascript
微信网页登录逻辑与实现方法
Apr 29 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使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
php使用timthumb生成缩略图的方法
2016/01/22 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
php使用yield对性能提升的测试实例分析
2019/09/19 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
RequireJs的使用详解
2017/02/19 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
三星美国官网:Samsung美国
2017/02/06 全球购物
Internet主要有哪些网络群组成
2015/12/24 面试题
2014年三万活动总结
2014/04/26 职场文书
希特勒的演讲稿
2014/05/23 职场文书
三八妇女节演讲稿
2014/05/27 职场文书
党员三严三实心得体会
2014/10/13 职场文书
经济纠纷起诉状
2015/05/20 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
文明上网主题班会
2015/08/14 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python