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 相关文章推荐
从JavaScript的函数重名看其初始化方式
Mar 08 Javascript
javascript字符串替换及字符串分割示例代码
Dec 12 Javascript
js使用正则实现ReplaceAll全部替换的方法
Aug 22 Javascript
解决ueditor jquery javascript 取值问题
Dec 30 Javascript
JS+CSS实现可拖动的弹出提示框
Feb 16 Javascript
手机端转换rem适应
Apr 01 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
Apr 05 Javascript
vue 实现数字滚动增加效果的实例代码
Jul 06 Javascript
微信小程序实现简单跑马灯效果
May 26 Javascript
node.js监听文件变化的实现方法
Apr 17 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
Sep 03 Javascript
React四级菜单的实现
Apr 08 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使用xpath解析XML的方法详解
2017/05/20 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
Node.js的特点详解
2017/02/03 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
python同时给两个收件人发送邮件的方法
2015/04/30 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
Python补齐字符串长度的实例
2018/11/15 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
团员学习总结的自我评价范文
2013/10/14 职场文书
京剧自荐信
2014/01/26 职场文书
爱情寄语大全
2014/04/09 职场文书
销售顾问工作计划书
2014/09/15 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
保安2014年终工作总结
2014/12/06 职场文书
2014年教师业务工作总结
2014/12/19 职场文书
python正则表达式re.search()的基本使用教程
2021/05/21 Python
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS