今日与大家分享的是ES5常用数组方法——迭代方法,迭代方法在很多时候都是非常非常好用的!接下来主要讲解的是迭代方法实现的原理
一、arr.forEach()
用途:专门用来遍历数组的没有返回值。
用法:用来遍历数组的
var = [5,6,2,3,9]
arr.forEach(function( item , index , arr){
console.log( item , index , arr);
})
原理:
var arr = [5,6,2,3,9];
function myForEach(arr,fn){
for(var i = 0; i < arr.length; i++){
fn(arr[i],i,arr);
}
}
var res = myForEach(arr,function(item,index,arr){
console.log(item,index,arr);
})
console.log(res);
二、arr.map()
用途:想要更改数组每一项的时候使用,返回值是数组
用法:
var arr = [4,3,2,1,0];
var res = arr.map( function( item , index , arr){
// 基本结构使用和forEach没有任何区别;
// console.log(item , index , arr)
return parseInt(item * 1.3 * 10) / 10
})
console.log(res);
原理:
var arr = [4,3,2,1,0];
function myMap(arr,fn){
var newArr = [];
for(var i = 0; i < arr.length; i++){
newArr.push(fn(arr[i],i,arr));
}
return newArr;
}
var res = myMap(arr,function(item,index,arr){
return parseInt(item * 1.3 * 10) / 10;
})
console.log(res);
三、arr.filter()
用途:返回筛选之后的数组
用法:
var arr = [4,3,2,1,0];
var res = arr.filter( function( item , index , arr ){
// return true;
// 过滤功能在这里要写条件;
return item > 2;
})
// 函数什么的都不写的情况执行结果都是 undefined , 那么一项内容都不会放进新数组之中;
console.log(res);
var arr = [4,3,2,1,0];
function myFilter(arr,fn){
var newArr = [];
for(var i = 0; i < arr.length; i++){
if(fn(arr[i],i,arr)){
newArr.push(arr[i]);
}
}
return newArr;
}
var res = myFilter(arr,function(item,index,arr){
return item > 2;
})
console.log(res);
四、arr.every()
用途:返回值为true或false,必须所有执行结果都为true才为true;如果某一个函数执行结果为false,那么后续循环不再执行
用法:
var arr = [5,2,1,4];
var res = arr.every( function( item , index , arr ){
return typeof item === “number”;
})
console.log(res);
原理:
var arr = [5,2,1,4];
function myEvery(arr,fn){
var flag = true;
for(var i = 0; i < arr.length; i++){
if(!fn(arr[i],i,arr)){
flag = false;
break;
}
}
return flag;
}
var res = myEvery(arr,function(item,index,arr){
return typeof item === "number";
})
console.log(res);
五、arr.some()
用途:返回值为true或false,必须所有执行结果都为false才为false;如果某一个函数执行结果为true,那么后续循环不再执行
用法:
var arr = [1,5,“hello”];
var res = arr.some( function( item ,index ){
return typeof item === “number”;
})
console.log(res);
原理:
var arr = [1,5,"hello"];
function mySome(arr,fn){
var flag = false;
for(var i = 0; i < arr.length; i++){
if(fn(arr[i],i,arr)){
flag = true;
break;
}
}
return flag;
}
var res = mySome(arr,function(item,index,arr){
return typeof item === "number";
})
console.log(res);
总结一下:
- forEach => 专门用来遍历数组的; 没有返回值
- map => 想要更改数组每一项的时候使用这个方法; 返回值是数组
- fileter => 过滤 返回值是数组
- every => 判定全部都; 返回值是布尔值
- some => 判定有一个; 返回值是布尔值
今日分享到此结束~