es5定义了新的数组方法遍历,映射,过滤,检测,简化和搜索数组。这些方法对操作数组 提供了极大的便利。es5数组 大对数方法,首先大多数方法的第一个参数 是一个函数,并且对数组的每个元素(或一些元素))调用一次该函数。大多数情况下,调用提供的函数提供三个参数:数组元素,元素索引和元素本身。通常情况下,只需要第一个参数,可忽略后两个参数。大多数 es5数组方法的第一个参数是一个函数,第二个参数是可选的,如果有第二个参数,则调用的函数被看成是第二个参数的方法。也就是说,在调用函数式传递进去的第二个参数作为他的this官架子得值来使用。es5中的数组的方法都不会修改他们调用的原始数组。当然传递给这些方法的函数是可以修改这些数组的。
下面介绍数组方法:
1.forEach()方法从头遍历数组,为每个元素调用指定的函数。传递的参数作为forEach()传递的函数作为forEach.的第一个参数。然后forEach()使用三个参数调用该函数: 数组元素,元素的索引,元素本身。如果只关心数组元素的值,可以编写只有一个参数的函数。
var data = [1,2,3,4];
var sum = 0;
data.forEach(function(value){
sum += value;
});
data.forEach(function(value,i,a){
a[i] = value + 1; //数组里的每个元素都加上1;
});
2.map()方法将调用的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值。
var a = [1,2,3];
var b = a.map(function(x){
return x*x; //b得值是[1,4,9]
});
3.filter()方法返回的数组元素是调用的数组的一个子集,传递的函数是用来逻辑判定的,该函数返回true或false。通俗点说就是过滤器,过滤满足条件的数组的元素。
var a = [1,2,3,4,5];
var smallValues = a.filter(function(x){
return x < 3; //[1,2]
});
var every = a.filter(function(x,i){
return i%2 == 0; //[1,3,5]
});
4,every()和some()方法是数组的逻辑判定,他们对数组元素指定的函数进行判定,返回true或false.
every()方法针对数组中的所有元素调用判定函数都返回true,它才返回true.some()方法,当且数组至少有一个元素调用判定函数返回true,它就返回true。
var a = [1,2,3,4,5,6];
a.every(function(x){return x<10 ;});//true
a.every(function(x){return x%2 === 0});//false
a.some(function(x){return x<2 ;});//true
a.some(function(x){return x%2 === 0});//true
注意:一旦every()和aome()确认返回什么值时它们就会停止遍历数组元素。