ECMAScript 5中的数组方法

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.指定数组的索引,从那里开始搜索(可选),如果省略,从头开始

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章