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增加行复制行删除行的实现代码
Nov 09 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
Oct 17 Javascript
node.js中的emitter.emit方法使用说明
Dec 10 Javascript
表单验证插件Validation应用的实例讲解
Oct 10 Javascript
实例解析jQuery中如何取消后续执行内容
Dec 01 Javascript
jQuery中animate的几种用法与注意事项
Dec 12 Javascript
原生js实现放大镜特效
Mar 08 Javascript
vue做移动端适配最佳解决方案(亲测有效)
Sep 04 Javascript
vue.extend与vue.component的区别和联系
Sep 19 Javascript
微信小程序实现多个按钮的颜色状态转换
Feb 15 Javascript
微信小程序自定义扫码功能界面的实现代码
Jul 02 Javascript
谈谈JavaScript中的垃圾回收机制
Sep 17 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
自己动手做一个SQL解释器
2006/10/09 PHP
一个高ai的分页函数和一个url函数
2006/10/09 PHP
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
javascript 获取浏览器版本
2015/01/21 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
原生JS实现圆环拖拽效果
2017/04/07 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
2018/04/05 Python
python实现一组典型数据格式转换
2018/12/15 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
使用pandas实现筛选出指定列值所对应的行
2020/12/13 Python
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
结婚典礼证婚词
2014/01/11 职场文书
财务总监岗位职责
2014/03/07 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书
Python实现机器学习算法的分类
2021/06/03 Python
SpringBoot整合Minio文件存储
2022/04/03 Java/Android
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers