数组遍历是经常进行的一个操作,然而总是有时候会记不住各种遍历的返回值,是否会改变原数组等,这里做一个对比总结。
在ECMAScript5为数组定义5个迭代的方法,每个方法都接收两个参数:要在每一项运行的函数和(可选的)运行函数的作用域对象---影响this的值。传入这些方法中的函数会接手三个参数:数组项的值,该项在数组中的位置以及数组对象本身。
返回值 | 是否改变原数组 | |
every() | true/false | 否 |
filter() | 返回true的项组成的数组 | 否,返回一个新数组 |
forEach() | 没有返回值 | 否 |
map() | 返回函数调用的结果组成的数组 | 否,返回一个新数组 |
some() | true/false |
下面我们来看一下第二个参数的使用,该参数指定this关键字可引用的对象。
let obj1 = {
divisor: 2
}
let obj = {
divisor: 10,
remainder: function(value){
return value % this.divisor
}
}
var numbers = [8,12,44];
var result = numbers.map(obj.remainder, obj1);
console.log(result); // [0, 0, 0]