先来看一下是哪五种:
- every()
- some()
- filter()
- map()
- forEach()
我将这五个方法分成三类:
- 首先是every()和some(),两者都是遍历数组的每项,区别在于:every()要求每一项都符合给定函数才会返回true;some()只要有一项符合给定函数就会返回true。
var numbers = [0,1,2,3,4,5];
var resEvery = numbers.every(function(item,index,array){
return item > 1;
})
var resSome = numbers.some(function(item,index,array){
return item > 1;
})
console.log(resEvery); // false
console.log(resSome); // true
- 其次是filter(),这个方法会遍历数组的每项,只要符合给定函数的每一项,最后都会被合并在一个新的数组里返回。
var numbers = [0,1,2,3,4,5];
var resFilter = numbers.filter(function(item,index,array){
return item > 1 && item < 4;
})
console.log(resFilter); // [2,3]
- 最后是map()和forEach(),两者都是遍历数组的每项,对每一项都执行给定函数的方法,区别在于:map()会将执行给定函数之后所得的每一项合并成一个数组返回;forEach()则没有返回(相当于for的遍历)。
var numbers = [0,1,2,3,4,5];
var resMap = numbers.map(function(item,index,array){
return item*2;
})
var resForEach = numbers.forEach(function(item,index,array){
return item*2;
})
console.log(resMap); // [0, 2, 4, 6, 8, 10]
console.log(resForEach); // undefined
注:正常情况下,以上五种迭代方法均不会改变原数组里的值(除非在执行函数里执行操作原数组的方法)
网友评论