js some,foreach,map,filter,every对比

希望通过这篇笔记,加深自己对 ES5 新增的数组方法的理解,可以帮我们少一些 for 循环.

[…].some(ck)函数 —- 某个一个为true,则为true

  1. some意指”某些”,指是否”某些项”合乎条件。
  2. 皇上:有一个满意的,就来侍寝就可以了。
    (对数组中每个元素执行一次ck函数,直到某个元素返回true,则直接返回true。如果都返回false,则返回false。)
  3. 返回值为 Boolean 值。

检查整个数组中是否有满足ck函数的元素。

1
2
3
4
var result = [1,5,3,6].some( (v,i) => (v>10) )
//所有元素都不满足,返回result = false
var result = [10,5,30,60].some( (v,i) => (v<10) )
//有一个(多个)满足,返回result = true

[…].every(ck)函数 —- 某一个为false,则返回false

  • 跟some为基友关系,同样是返回Boolean值。
  • 与some相比就是true和false调换一下。
    (每个数组元素都执行一次ck函数,直到某个元素执行函数ck返回false,则直接返回false,如果全部返回true,则返回true)
  • 不过,every需要每一个妃子都要让朕满意,否则——“来人,给我拖出去砍了!”
    1
    2
    3
    4
    var result = [5,50,35,12,85].every( (v,i) => v<51 )
    //返回有一个(多个)大于等于51,则返回 result = false
    var result = [5,50,35,12,85].every( (v,i) => v<100 )
    //全部小于100,则返回 result = true

[…].foreach(ck)函数 —- 循环而已

每个数组元素都执行一次ck函数,foreach函数无法用break跳出

1
2
[50, 25, 49].forEach( (v,i) => console.log(v) );
//50 25 49

[…].filter(ck)函数 —- 得到返回值为true的元素的集合

每个数组元素都执行一次ck函数,最后返回每次元素执行ck函数后返回值的为true的元素集合(数组)

1
2
var newArray = [50,2,60,4,53,15].filter( (v,i) => (v>10) )
//返回数组中大于10的元素新数组 newArray = [50,60,53,15]

[…].reduce(ck,init) —- 依次执行ck(prv,next)

数组依次执行ck函数。

1
2
var result = [0,1,2,3]
restult.reduce((a,b)=> a+b,0) // 返回 6

[…].map(ck)函数 —- 返回每个元素返回值的集合

每个数组元素都执行一次ck函数,最后返回每次元素执行ck函数后返回值的集合(数组)

1
2
var newArray = [50,30,40].map( (v,i) => v/10 )
//每个元素除以10,最后返回一个新数组 newArray = [5,3,4]