您的位置:首页 > Web前端 > JavaScript

js取两个数组的交集|差集|并集|补集|去重示例代码

2016-12-11 17:14 941 查看
http://www.jb51.net/article/40385.htm

代码如下:
/**
*each是一个集合迭代函数,它接受一个函数作为参数和一组可选的参数
*这个迭代函数依次将集合的每一个元素和可选参数用函数进行计算,并将计算得的结果集返回
{%example
<script>
vara=[1,2,3,4].each(function(x){returnx>2?x:null});
varb=[1,2,3,4].each(function(x){returnx<0?x:null});
alert(a);
alert(b);
</script>
%}
*@param{Function}fn进行迭代判定的函数
*@parammore...零个或多个可选的用户自定义参数
*@returns{Array}结果集,如果没有结果,返回空集
*/
Array.prototype.each=function(fn){
fn=fn||Function.K;
vara=[];
varargs=Array.prototype.slice.call(arguments,1);
for(vari=0;i<this.length;i++){
varres=fn.apply(this,[this[i],i].concat(args));
if(res!=null)a.push(res);
}
returna;
};

--------------------------------------------------------------------------------------------

/**


*Array.prototype.[methodname]allowsyoutodefine/overwriteanobjectsmethod


*needleistheitemyouaresearchingfor


*thisisaspecialvariablethatrefersto"this"instanceofanArray.


*returnstrueifneedleisinthearray,andfalseotherwise


*/


Array.prototype.contains=
function
(needle){


for
(i
in
this
){


if
(
this
[i]==needle)
return
true
;


}


return
false
;


}


-------------------------------------------------------------------------------------------
/**
*得到一个数组不重复的元素集合<br/>
*唯一化一个数组
*@returns{Array}由不重复元素构成的数组
*/
[b]Array.prototype.uniquelize=function(){[/b]
[b]varra=newArray();[/b]
[b]for(vari=0;i<this.length;i++){[/b]
[b]if(!ra.contains(this[i])){[/b]
[b]ra.push(this[i]);[/b]
[b]}[/b]
[b]}[/b]
[b]returnra;[/b]
[b]};[/b]
----------------------------------------------------------------------------
/**
*求两个集合的补集
{%example
<script>
vara=[1,2,3,4];
varb=[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){
returnArray.minus(Array.union(a,b),Array.intersect(a,b));
};
-------------------------------------------------------------------------------------------
/**
*求两个集合的交集
{%example
<script>
vara=[1,2,3,4];
varb=[3,4,5,6];
alert(Array.intersect(a,b));
</script>
%}
*@param{Array}a集合A
*@param{Array}b集合B
*@returns{Array}两个集合的交集
*/
[b]Array.intersect=function(a,b){[/b]
[b]returna.uniquelize().each(function(o){returnb.contains(o)?o:null});[/b]
[b]};[/b]
-----------------------------------------------------------------------------------
/**
*求两个集合的差集
{%example
<script>
vara=[1,2,3,4];
varb=[3,4,5,6];
alert(Array.minus(a,b));
</script>
%}
*@param{Array}a集合A
*@param{Array}b集合B
*@returns{Array}两个集合的差集
*/
[b]Array.minus=function(a,b){[/b]
[b]returna.uniquelize().each(function(o){returnb.contains(o)?null:o});[/b]
[b]};[/b]
----------------------------------------------------------------------------------
/**
*求两个集合的并集
{%example
<script>
vara=[1,2,3,4];
varb=[3,4,5,6];
alert(Array.union(a,b));
</script>
%}
*@param{Array}a集合A
*@param{Array}b集合B
*@returns{Array}两个集合的并集
*/
[b]Array.union=function(a,b){[/b]
[b]returna.concat(b).uniquelize();[/b]
[b]};[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: