JavaScript五种迭代方法解析

先来看一下是哪五种:

  • every()
  • some()
  • filter()
  • map()
  • forEach()

我将这五个方法分成三类:

  1. 首先是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
  1. 其次是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]
  1. 最后是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

注:正常情况下,以上五种迭代方法均不会改变原数组里的值(除非在执行函数里执行操作原数组的方法)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容