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.指定數組的索引,從那裏開始搜索(可選),如果省略,從頭開始