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;
};
--------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
/**
*得到一个数组不重复的元素集合<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]
代码如下:
/**
*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]
相关文章推荐
- js取两个数组的交集|差集|并集|补集|去重示例代码
- js取数组两个数组的交集|差集|并集|补集|去重
- JS数组交集、并集、差集的示例代码
- js取数组两个数组的交集|差集|并集|补集|去重
- LINQ操作数组代码(交集,并集,差集,最值,平均,去重复)
- 求两个升序数组的交集,并集,补集
- LINQ操作数组代码(交集,并集,差集,最值,平均,去重复)
- 集合:求A、B两个集合的交集、并集和补集的代码(C语言)
- 求两个数组的交集、并集和差集算法分析与实现
- Python 两个列表的差集、并集和交集实现代码
- 求两个数组的交集、并集和差集算法分析与实现
- PHP对数组求交集,差集,并集示例
- 求两个数组的交集、并集和差集算法分析与实现(转自http://blog.sina.com.cn/s/blog_616e189f0100mrdn.html)
- java容器取交集、并集、补集、差集示例
- java求两个数组的并集、交集、差集
- 求两个升序数组的交集、并集、补集
- 两个数组的交集,并集,差集。
- js 数组 : 差集、并集、交集、去重
- Python 两个列表的差集、并集和交集实现代码