JavaScript数组功能扩展--差集,并集,合集,去重

//数组功能扩展
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;  
}; 
//数组是否包含指定元素
Array.prototype.contains = function(suArr){
    for(var i = 0; i < this.length; i ++){  
        if(this[i] == suArr){
            return true;
        } 
     } 
     return false;
}
//不重复元素构成的数组
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;  
};
//两个数组的补集 
Array.complement = function(a, b){  
     return Array.minus(Array.union(a, b),Array.intersect(a, b));  
};
//两个数组的交集  
Array.intersect = function(a, b){  
     return a.uniquelize().each(function(o){return b.contains(o) ? o : null});  
}; 
//两个数组的差集
Array.minus = function(a, b){  
     return a.uniquelize().each(function(o){return b.contains(o) ? null : o});  
}; 
//两个数组并集
Array.union = function(a, b){  
     return a.concat(b).uniquelize();  
};

转自:http://qiangmzsx.blog.51cto.com/2052549/1549392

0 条评论

    发表评论

    电子邮件地址不会被公开。 必填项已用 * 标注