javasript自己封装的数组方法

这里写图片描述

//向数组里面添加each方法
Array.prototype.each = function(fun){
    for(var i = 0, len = this.length;i < len; i++){
        fun(i, this[i]);
    }
}
var zycArray = {

    //求和
    sum:function(arr){
        var sum = 0;
        for(var i = 0, len = arr.length; i < len; i++){
            if(typeof(arr[i]) !== "number"){
                console.error("数组有非数字类型元素");
                break;
            }else{
                sum = sum + arr[i];
            }
        }
        return sum;
    },

    //平均数
    avg:function(arr, num){
        var sum = zycArray.sum(arr);
        var avg = (sum/arr.length).toFixed(num);
        return avg;
    },

    //最大值
    max:function(arr){
        var max = arr[0];
        arr.each(function(k, v){
            if(typeof(v) !== "number"){
                console.error("数组中包含非数字类型元素");
                return false;
            }else{
                if(max < v){
                    max = v;
                }
            }
        });
        return max;
    },

    //求最小值
    min:function(arr){
        var min = arr[0];
        arr.each(function(k, v){
            if(typeof(v) !== "number"){
                console.error("数组中包含非数字类型元素");
                return false;
            }else{
                if(min < v){
                    min = v;
                }
            }
        });
        return min;
    },

    //提取中文文本元素
    filterTxt:function(arr){
        var chReg = /^[\u4E00-\u9FA5]+$/;  //中文正则
        var result = [];
        arr.each(function(k, v){
            if(chReg.test(arr[k])){
                result[result.length++] = arr[k];
            }
        });
        return result;
    },

    //提取数字元素
    fliterNum:function(arr){
        var result = [];
        arr.each(function(k, v){
            if(typeof(arr[k]) == "number"){
                result[result.length++] = arr[k];
            }
        });
        return result;
    },

    //提取英文字符元素
    filterEnstr:function(){
        var chReg = /^[A-Za-z]+$/; //英文正则
        var result = [];
        arr.each(function(k,v){
            if(chReg.test(arr[k])){
                result[result.length++] = arr[k];
            }
        });
        return result;
    },

    //交集
    inter:function(arr1, arr2){
        var result = [];
        arr1.each(function(k, v){

            arr2.each(function(index, value){
                if(v == value){
                    result[result.length++] = v;
                }
            });

        });
        return result;
    },

    //并集
    union:function(arr1, arr2){
        var result = arr1;
        arr2.each(function(k, v){
            result[result.length++] = v;
        });
        return result;
    },

    //补集arr1是全集,arr2是子集,arr1包含arr2
    complement:function(arr1, arr2){
        var result = [];

        for(var i = 0, len = arr1.length; i < len; i++){
            var flag = true;    //每次都要重置状态不然得不到想要的结果
            for(var j = 0, lenj = arr2.length; j < lenj; j++){
                if(arr1[i] === arr2[j]){
                    flag = false;
                    break;
                }
            }
            if(flag){
                result[result.length++] = arr1[i];
                flag = true;
            }       
        }
        return result;
    },

    //交换位置
    switchPosition:function(arr, index1, index2){

        var result = arr;
        var temp = result[index1];
        result[index1] = result[index2];
        result[index2] = temp;
        return result; 
    }

}
var arr = [1,2,3,3,5664546,"哈哈","hahs哈哈","我","ssd","hah2112","vv"];

console.log("最大值"+zycArray.max(arr));
console.log("求和"+zycArray.sum(arr));
console.log("平均值"+zycArray.avg(arr,4));
console.log("提取中文"+zycArray.filterTxt(arr));
console.log(zycArray.fliterNum(arr));
console.log(zycArray.filterEnstr(arr));
console.log(zycArray.inter([1,2,3,"ss",false],["哈","ss",2]));
console.log(zycArray.union([1,2,3,"ss",false],["哈","sss",22]));
console.log(zycArray.complement([1,2,3,"ss",false],[2,3,"ss"]));
console.log(zycArray.switchPosition(arr,1,2));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值