ECMAScript5中新增的数组方法总结

every():测试断言函数是否对每个数组元素为真

array.ervery(predicate,o);

参数predicate:断言函数,有三个参数predicate(array[i],i,array),返回值被当做布尔值解析。所有数组元素通过断言函数的返回值都可以被转换成布尔真时,every()方法返回true;

参数o:调用predicate时可选的this值,可选;

例子:

[1,2,3].every(function(x){return x<5}); //=>true:所有元素都小于5
[1,2,3].every(function(x){return x<3}); //=>false:不是所有元素都小于3
[].every(function(x){return false}); //=>true:[]总是返回true

filter():过滤数组元素,返回一个满足条件的新数组

array.filter(predicate,o);

参数predicate:过滤函数,有三个参数predicate(array[i],i,array),按序号从小到大遍历array,每个数组元素调用一次predicate,若返回值为真,则该数组元素会添加到返回的数组中;

参数o:调用predicate时可选的this值,可选;

例子:

[1,2,3].filter(function(x){return x>1}); //=>[2,3]

forEach():便利数组元素,并对每一个元素调用一次f

array.forEach(f,o);

参数f:为array的每一个元素调用的函数(序号从小到大);

参数o:调用f时可选的this值,可选;

例子:

var a = [1,2,3];
a.forEach(function(x,i,array){array[i]++}); //a现在的值是[2,3,4]。forEach没有返回值。

indexOf():在数组中查找值

array.indexOf(value,start);

参数value:要查找的值;

参数start:开始查找数组元素的序号,可选参数,不传则从0开始查找;

若找到该值(用'===='判断),则方法返回该值的索引位置,若没有找到,返回-1。

例子:

['a','b','c'].indexOf('b');  // => 1
['a','b','c'].indexOf('a',1);  // => -1
['a','b','c'].indexOf('d');  // => -1

lastIndexOf():在数组中查找值(反向)

array.lastIndexOf(value,start);

参数value:要查找的值;

参数start:开始查找数组元素的序号,可选参数,不传则从最后一个元素开始查找;

若找到该值(用'===='判断),则方法返回该值的索引位置,若没有找到,返回-1,查找的方向与indexOf相反。

map():按某种规则处理每个数组元素,返回一个等长的新的数组

array.map(f,o);

参数f:数组的处理函数,有三个参数f (array[i],i,array),该方法返回的值会成为map方法返回数组的一个元素,索引为i

参数o:调用f时可选的this值,可选;

例子:

[1,2,3].map(function(x){return x*x;});  // => [1,4,9]

reduce():从数组中计算出一个值

详见javascript reduce方法

reduceRight():从数组中计算出一个值(从右到左)

reduceRight()方法与reduce()方法只有一点不同:reduceRight()方法遍历数组的时候是从右到左(从最大序号到最小序号)。

some():测试是否有数组元素满足断言函数

参数predicate:断言函数,有三个参数predicate(array[i],i,array);

参数o:调用predicate时可选的this值,可选;

some()方法与every()很相似,不同的是,some()并不需要所有的数组元素在调用predicate时都返回真,只需要有一个元素在调用predicate时返回真,some()就会停止遍历,并返回true。