• JS 数组间的操作


    JS 数组间的操作(交集,并集、差集)

    以下是js数组之间常用的操作,如交集,并集、差集等。

    迭代

    each是一个集合迭代函数,可以将一个函数作为参数和一组可以选的参数。依次将集合的每一个元素和可选参数用函数进行计算。

     /**fn 进行迭代判定的函数
       *零个或多个可选的用户自定义参数 */
    Array.prototype.each = function(fn){
        fn = fn || Functuon.K;
        var a = [];
        var args = Array.prototype.slice.call(arguments,10);
        for(var i=0;i<this.length;i++){
            var res = fn.apply(this,this[i],i).concat(agrs);
            if(res != null) {
                a.push(res);
            }
        }
    }
    

    Array.prototype.slice(arguments, 0); 这个写法可以用于function() {} 内,这样可以将函数的参数列表转换成一个真正的数组。

    例:var a = [1,2,3,4].each(function(x){return x > 2 ? x : null});

    唯一化数组

    /** 得到一个数组不重复的元素集合**/
    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.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();
    }
    

    补集

    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)?0:null;
        })  
    }
    

  • 相关阅读:
    centos7使用supermin制作centos7的docker镜像包
    Linux ip netns 命令
    ip命令讲解
    openstack API应用用
    在EF6.0中打印数据库操作日志
    EF记录统一添加创建,修改时间
    Inner Join and Left Join 与条件的结合
    字符串分割
    居中方案
    移动 前端 框架
  • 原文地址:https://www.cnblogs.com/lanxuan826/p/9873702.html
Copyright © 2020-2023  润新知