ECMAScript 5中的数组方法(摘自javascript权威指南)
forEach(): 没有for循环的break语句,不能终止遍历,只能通过try{}catch{}抛出异常终止
//三个参数: 数组元素、元素索引,数组本身
var data = [1,2,3,4,5]
data.forEach(function(v,i,a) {
a[i] = v + 1; // => [2,3,4,5,6]
})
map():应该有返回值,返回一个新数组
a = [1,2,3];
b = a.map(function(x) {
return x*x // =>[1,4,9]
)
filter(): 返回的数组元素是调用得到数据的子集
a = [5,4,3,2,1];
values = a.fliter(function(x){
return x > 3 ; // [5,4]
})
注:filter会跳过稀疏数组中缺少的元素
// 压缩稀疏数组的空缺
var dense = sparse.filter(function(){
return true;
})
// 压缩空缺并删除undefined和 null的元素
a = a.filter(funtion(x){
return x !== undefined && x !== null;
})
every(): 当且仅当数组中所有的元素调用判定函数都返回true,才返回true;
a = [1,2,3,4,5];
a.every(function(x){
return x < 10 ; // => true:所有值都小于10
})
some(): 数组中至少有一个元素调用判定函数都返回true,就返回true;
a = [1,2,3,4,5];
a.some(function(x){
return x%2 === 0; // => true, a含有偶数值
})
reduce():使用指定的函数将数组元素进行组合
参数: 1. 函数 2.传递给函数的初始值(可选)
空数组时,不带初始值调用reduce会报错
// * 传递的判定函数的参数依次:reduce的第二个参数,数组元素,数组索引,数组本身*
// 数组求和
// 有初始值
// 第一次: x = 0(reduce第二个参数), y = 1(数组第一个元素)
// 第二次:x = 1(第一次x+y的值); y = 2(数组的第二个元素);
// ...
var a = [1,2,3,4,5];
var sum = a.reduce(funciton(x,y){
return x + y ;
}, 0);
//数组求积
var a = [1,2,3,4,5];
var sum = a.reduce(funciton(x,y){
return x * y ;
}, 1);
indexOf()和lastIndexOf():
搜索整个数组中具有给定值的元素,==返回找到的第一个元素的索引或者如果没找到返回-1==。indexOf()从头至尾搜索,lastIndexOf反向搜索;
参数:
1.需要搜索的值;
2.指定数组的索引,从那里开始搜索(可选),如果省略,从头开始