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跑步算法的实现代码
Dec 04 Javascript
input禁止键盘及中文输入,但可以点击
Feb 13 Javascript
js调用iframe实现打印页面内容的方法
Mar 04 Javascript
用javascript实现自动输出网页文本
Jul 30 Javascript
原生js封装的一些jquery方法(详解)
Sep 20 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
Dec 08 Javascript
AngularJS Controller作用域
Jan 09 Javascript
Node.js利用断言模块assert进行单元测试的方法
Sep 28 Javascript
AngularJS监听ng-repeat渲染完成的方法
Mar 20 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
May 23 jQuery
Vue双向绑定实现原理与方法详解
May 07 Javascript
vue3.0实现点击切换验证码(组件)及校验
Nov 18 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实现网上点歌(二)
2006/10/09 PHP
C# Assembly类访问程序集信息
2009/06/13 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
2016/01/13 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
Pycharm设置界面全黑的方法
2018/05/23 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
Pytorch环境搭建与基本语法
2020/06/03 Python
Python爬虫自动化爬取b站实时弹幕实例方法
2021/01/26 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
高中生班主任评语
2014/04/25 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
2015年财务部工作总结
2015/04/10 职场文书
导游词之西安骊山
2019/12/03 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python