es5中的数组方法

来源:互联网 发布:小米笔记本12.5知乎 编辑:程序博客网 时间:2024/05/09 16:21

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()确认返回什么值时它们就会停止遍历数组元素。