javascript中数组的五种迭代方法
ES5中为数组定义了5个迭代方法。每个方法接收两个参数:要在每一项上运行的函数和运行该函数的作用域(可选)——影响this的值。传入这些方法中的函数会接收三个参数:数组项的值、该项在数组中的位置、数组对象本身。
5个迭代方法(都是对数组中的每一项运行给定函数):
1.every():每一项都返回true,则返回true。
2.filter():返回true的项组成的数组。
3.forEach():没有返回值。
4.map():返回调用函数的结果组成的数组。
5.some():任一项返回true,则返回true。
every()和some()具有相似性,先对比两者:
var numbers=[1,2,3,4,5,4,3,2,1];
//every()
var everyResult =numbers.every(function(item,index,array){
return (item>2);
});
alert(everyResult);//false
//some()
var someResult=numbers.some(function(item,index,array){
return (item>2);
});
alert(someResult);//true
然后再看filter():
//filter
var numbers=[1,2,3,4,5,4,3,2,1];
var filterResult=numbers.filter(function(item,index,array){
return (item>2);
});
alert(filterResult);//[3,4,5,4,3]
map():
//map
var numbers=[1,2,3,4,5,4,3,2,1];
var mapResult=numbers.map(function(item,index,array){
return item*2;
});
alert(mapResult);//[2,4,6,8,10,8,6,4,2]
最后来看forEach(),本质上与使用for循环迭代数组一样:
//forEach
var numbers=[1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item,index,array){
//执行某些操作
});