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 相关文章推荐
prototype 1.5相关知识及他人笔记
Dec 16 Javascript
tbody元素支持嵌套的注意方法
Mar 24 Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
Oct 21 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
Aug 05 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
Jun 03 Javascript
JS异步加载的三种实现方式
Mar 16 Javascript
JS使用cookie实现只出现一次的广告代码效果
Apr 22 Javascript
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
Sep 23 jQuery
利用angular、react和vue实现相同的面试题组件
Feb 19 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
Jun 04 Javascript
vue.js 中使用(...)运算符报错的解决方法
Aug 09 Javascript
vue中音频wavesurfer.js的使用方法
Feb 20 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
几种显示数据的方法的比较
2006/10/09 PHP
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
PHP 文件系统详解
2012/09/13 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
2019/04/09 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
Vue.use源码分析
2017/04/22 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
Vue中计算属性computed的示例解读
2017/07/26 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
Vue学习之axios的使用方法实例分析
2020/01/06 Javascript
js实现文字头像的生成代码
2020/03/07 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
python查询sqlite数据表的方法
2015/05/08 Python
linux下python抓屏实现方法
2015/05/22 Python
jupyter安装小结
2016/03/13 Python
Python之列表实现栈的工作功能
2019/01/28 Python
Python自动化操作实现图例绘制
2020/07/09 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
荷兰游戏商店:Allyouplay
2019/03/16 全球购物
旅游管理专业大学生职业规划书
2014/02/27 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
关于运动会的口号
2014/06/07 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
自我工作评价范文
2015/03/06 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书