1、forEach的封装
forEach的作用是遍历数组
//封装 forEach
function forEach(arr,fn){
for(var i=0;i<arr.length;i++){
fn(arr[i],i,arr);
}
}
var arr =[1,3,5,6,7,8];
//调用函数打印出每一个元素
forEach(arr,function(item,i,arr){
console.log('arr数组的第'+i+'个元素是'+item);
})
2、map的封装
map(function(v,i,arr){})
: 改变数组中的值,返回一个新的数组 必须有return
function map(arr,fn){
var newarr=[]
for(i=0;i<arr.length;i++){
arr[i]=fn(arr[i],i,arr)
newarr.push(arr[i])
}
return newarr
}
var arr0 = [1,2,3] ;
//将数组每一个值加三
var res = map(arr0,function (v) {
return v + 3
})
console.log(res);
3、filter的封装
filter的作用:筛选出符合条件的元素,返回符合条件元素的新数组
function fliter(arr,fn){
var newarr=[];
for(i=0;i<arr.length;i++){
//筛选符合条件的元素,符合条件的传进新数组
if(fn(arr[i],i,arr)){
newarr.push(arr[i]);
}
}
return newarr;
}
var arr =[1,2,3,4,5,6];
var newarr=fliter(arr,function(item,i,arr){
//筛选出大于2的元素
if(item>2) return item;
})
console.log(newarr);
4、every的封装
every(function(v,i){})
: 判断数组中是不是每一个值都满足条件
function every(arr,fn){
//初始化返回值为真
var flag=true;
//判断 一个元素不满足条件,就把返回值设置成假
for(let i=0;i<arr.length;i++){
if(!fn(arr[i],i,arr)){
flag=false;
}
}
return flag;
}
var arr1=[1,3,5,6,7,8,9,10];
var result=every(arr,function(item,i,arr){
//判断所有元素是否是数字类型
return typeof(item)==='number';
});
console.log(result);
5、some的封装
some(function(v,i){})
: 判断数组中有没有满足条件的值
function some(arr,fn){
//初始化返回值为假
var flag=false;
//判断 一个元素满足条件,就把返回值设置成真
for(let i=0;i<arr.length;i++){
if(fn(arr[i],i,arr)){
flag=true;
}
}
return flag;
}
var arr2=[1,3,5,6,7,8,9,10];
var result=some(arr,function(item,i,arr){
//判断是否有元素等于7
return item===7;
});
console.log(result);
6、concat的封装
concat:拼接数组并返回新的数组
function concat() {
console.log(arguments);
var newArr = [] ;
for(var i in arguments) {
for(var j in arguments[i]) {
console.log(arguments[i][j]);
newArr.push(arguments[i][j])
}
}
console.log(newArr);
}
concat([1,2,3] , [4,5,6])