//向数组里面添加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));
javasript自己封装的数组方法
最新推荐文章于 2024-12-14 21:41:22 发布
本文介绍了一个自定义JavaScript数组处理库,包括求和、求平均数、查找最大最小值等数学运算,以及过滤特定类型元素(如数字、中文、英文字符)、集合操作(如交集、并集、补集)和元素位置交换等功能。

333

被折叠的 条评论
为什么被折叠?



