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 相关文章推荐
jquery 之 $().hover(func1, funct2)使用方法
Jun 14 Javascript
js获取键盘按键响应事件(兼容各浏览器)
May 16 Javascript
js实现广告漂浮效果的小例子
Jul 02 Javascript
alert中断settimeout计时功能
Jul 26 Javascript
javascript:window.open弹出窗口的位置问题
Mar 18 Javascript
超棒的响应式布局jQuery插件Freetile.js
Nov 17 Javascript
详解Webpack DLL用法以及功能
Jul 11 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
Oct 09 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
May 26 Javascript
使用JavaScript解析URL的方法示例
Mar 01 Javascript
Javascript Dom元素获取和添加详解
Sep 24 Javascript
vue渲染方式render和template的区别
Jun 05 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
利用文件属性结合Session实现在线人数统计
2006/10/09 PHP
PHP 根据IP地址控制访问的代码
2010/04/22 PHP
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
echarts整合多个类似option的方法实例
2018/07/10 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
采购意向书范本
2014/03/31 职场文书
设计师求职信模板
2014/05/06 职场文书
擅自离岗检讨书
2014/09/12 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
文明单位汇报材料
2014/12/24 职场文书
九华山导游词
2015/02/03 职场文书
大学生入党自传2015
2015/06/26 职场文书
工作简报格式范文
2015/07/21 职场文书
环保建议书作文400字
2015/09/14 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis