javasript自己封装的数组方法

来源:互联网 发布:手机怎么连接网络电视 编辑:程序博客网 时间:2024/05/20 17:59

这里写图片描述

//向数组里面添加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));
原创粉丝点击