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 UI AutoComplete 自动完成使用小记
Aug 21 Javascript
技术男用来对妹子表白的百度首页
Jul 23 Javascript
JS实现双击编辑可修改状态的方法
Aug 14 Javascript
js实现文字闪烁特效的方法
Dec 17 Javascript
详解js界面跳转与值传递
Nov 22 Javascript
javascript中闭包概念与用法深入理解
Dec 15 Javascript
bootstrap手风琴制作方法详解
Jan 11 Javascript
vue.js开发环境安装教程
Mar 17 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
Sep 19 Javascript
JavaScript实现的开关灯泡点击切换特效示例
Jul 08 Javascript
JS实现时间校验的代码
May 25 Javascript
js基础语法与maven项目配置教程案例
Jul 15 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 Image Resize图片大小调整的函数代码
2011/01/17 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
工作需要写的一个js拖拽组件
2011/07/28 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
Javascript的this详解
2019/03/23 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
Python双链表原理与实现方法详解
2020/02/22 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
戴尔英国官网:Dell英国
2017/05/27 全球购物
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
英国领先的在线高尔夫商店:Scottsdale Golf
2019/08/26 全球购物
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
中学老师的自我评价
2013/11/07 职场文书
25岁生日感言
2014/01/13 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
社区四风存在问题及整改措施
2014/10/26 职场文书
边城读书笔记
2015/06/29 职场文书
趣味运动会广播稿
2015/08/19 职场文书
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL