Fork me on GitHub

Javascript数组的every、some、map、filter、forEach

  • every,判断是否所有元素都符合,需要每个都为true才返回true,否则返回false
  • some,判断是否有元素符合,一旦遇到true则停止
  • map,每个元素按function返回结果构成新数组
  • filter,返回所有符合条件的元素构成的新数组
  • forEach,单独执行每个元素,无返回

各函数执行时需要传入function作为参数,每次执行会传入value和index

看个例子就明白了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
var fun = function(v, i){
console.log(v,i);
return v %2 ==0;
}

var arr = [0,0,2,2,1,2,3,4,5,6,7,8];
arr.every(fun);
//-->0 0
//-->0 1
//-->2 2
//-->2 3
//-->1 4
//-->false
//every一旦遇到false则中止,并返回false

arr.some(fun)
//-->0 0
//-->true
//some一旦遇到true则中止,并返回true

arr.map(fun)
//-->0 0
//-->0 1
//-->2 2
//-->2 3
//-->1 4
//-->2 5
//-->3 6
//-->4 7
//-->5 8
//-->6 9
//-->7 10
//-->8 11
//-->[true, true, true, true, false, true, false, true, false, true, false, true]
//map会执行每个元素并把function返回的结果组成新数组,不改变原数组

arr.filter(fun)
//-->0 0
//-->0 1
//-->2 2
//-->2 3
//-->1 4
//-->2 5
//-->3 6
//-->4 7
//-->5 8
//-->6 9
//-->7 10
//-->8 11
//-->[0, 0, 2, 2, 2, 4, 6, 8]
//filter跟map不同的是新数组不是返回值,而是返回true的元素

arr.forEach(fun)
//-->0 0
//-->0 1
//-->2 2
//-->2 3
//-->1 4
//-->2 5
//-->3 6
//-->4 7
//-->5 8
//-->6 9
//-->7 10
//-->8 11
//-->undefined
//forEach不改变原数组,也无返回值,只是把数组依个执行了一下

相关文章推荐

如果觉得我的文章对您有用,可否请我喝杯速溶咖啡