• 对数组的操作Array.prototype.sort 方法alert( [1, 3, 9, 2].sort() )


    1.   数组的 sort 方法 远远没有被充分利用,而且可能比开发者们想像的更加强大。很多开发者可能觉得 sort 方法可以用来做这种事情:

    
    
        [1, 3, 9, 2].sort();
        // 返回 [1, 2, 3, 9]    alert( [1, 3, 9, 2].sort() )

    ……这没错,但它还有更强大的用法,比如这样:

        [  
            { name: "Robin Van PurseStrings", age: 30 },  
            { name: "Theo Walcott", age: 24 },  
            { name: "Bacary Sagna", age: 28  }  
        ].sort(function(obj1, obj2) {  
            // Ascending: first age less than the previous  
            // 实现增序排列:前者的 age 小于后者  
            return obj1.age - obj2.age;  
        });  
            // Returns:    
            // [  
            //    { name: "Theo Walcott", age: 24 },  
            //    { name: "Bacary Sagna", age: 28  },  
            //    { name: "Robin Van PurseStrings", age: 30 }  
        // ]  



       var oldArr=[1,4,9,2,8,3,78,68];  
       alert(oldArr.sort(function(a,b){ return a-b}))
    你不仅可以对简单类型的数组项进行排序,可以通过属性来排序对象。如果哪天服务器端发来一段 JSON 数据,而且其中的对象需要排序,你可别忘了这一招!



    使用 push 来合并数组

      数组的 slice 和 apply 方法所能组合出的几个小妙招,所以对于数组方法的其它技巧,你应该已经做好心理准备了吧。这次使用 push 方法来合并数组:

    
    
        var mergeTo = [4,5,6];  
        var mergeFrom = [7,8,9];        
        Array.prototype.push.apply(mergeTo, mergeFrom);        
        mergeTo; // is: [4, 5, 6, 7, 8, 9]  
    
    

      这是一项不为人知的小技巧,简单的原生方法就可以实现数组合并这样的常见任务。(译注:这个方法的巧妙之外不仅在于 push 方法可以接收多个参数,还涉及到 apply 方法的第二个参数的用法。)

     
    push(args)可以每次压入多个元素,并返回更新后的数组长度。pop()函数每次只会弹出最后一个结尾的元素,并返回弹出的元素,如果是对空组数调用pop()则返回undefined

    var oldArr=[1,2,3];
    alert(oldArr.push(4,[5,6]))–>5(这里只会将[5,6]当做一个元素来计算,返回更新后的数组长度5)
    此时oldArr–>[1,2,3,4,[5,6]]
    alert(oldArr.pop())–>[5,6](这里弹出最后一个元素[5,6],而不是6)
    此时oldArr–>[1,2,3,4]
    oldArr.pop()–>4
    oldArr.pop()–>3
    oldArr.pop()–>2
    oldArr.pop()–>1
    oldArr.pop()–>undefined(空数组弹出)

    splice(start,deleteCnt,args) 中的start表示开始操作下标,deleteCnt表示从开始下标开始(包括该元素)要删除的元素个数,删除操作返回删除的元素。
    args表示用来替换 删除掉的那些元素(可以有多个参数),start和deleteCnt必须为数字,如果不是数字尝试转换,转换失败当做0来处理。

    var oldArr3=[1,2];
    oldArr3.splice()–>”"(返回空的字符串,不做任何操作,操作后oldArr3–>[1,2])
    oldArr3.splice(“”)–>[1,2](“”尝试转换为数字失败返回0,所以删除1,2,操作后oldArr3–>[],但是IE下有点恶心,不做任何操作)
    oldArr3.splice(“1a”)–>同上
    odlArr3.splice(0,2)–>[1,2](“从下标0的元素开始,删除两个元素1,2因此删除后oldArr3–>[])
    oldArr3.splice(0,-1)–>”"(从0下标开始删除-1个元素,故等于没做任何操作,操作后oldArr3–>[1,2])
    oldArr3.splice(1,1)–>2(从下标1 开始删除1个元素,即删除2,所以删除后oldArr3–>[1])
    oldArr3.splice(1,4)–>2(从下标1 开始删除4个元素,1开始只有1个元素,故删除2,所以删除后oldArr3–>[1])
    oldArr3.splice(-1,0,3)–>”"(从下标-1即2元素开始删除0个元素,然后添加元素3,所以操作后oldArr3–>[1,3,2])
    oldArr3.splice(-1,1,3)–>2(从小标-1即2元素开始删除1个元素,然后添加元素3,操作后为oldArr3–>[1,3])


    concat,这个方法用来连接两个或多个数组,该数组不会改变原来的数组只会返回新的一个数组。连接的时候参数如果为数组,则连接的是数组中的元素。

    var oldArr4=[1,2];
    oldArr4.concat(3,4)–>[1,2,3,4]
    oldArr4.concat(3,4,[5,6])–>[1,2,3,4,5,6](这边添加的是[5,6]中的元素5和元素6)
    oldArr4.concat(3,[4,[5,6]])–>[1,2,3,4,[5,6]](这边最里层的元素[5,6]整个用来添加,而不是拆开)

  • 相关阅读:
    Hoder.js介绍
    vim折叠方法
    tensorflow最基础分类实例--iris分类
    语音识别GMM-HMM
    亨元模式
    责任链模式
    命令模式
    策略模式
    工厂模式
    Java高并发程序设计(十)--无锁
  • 原文地址:https://www.cnblogs.com/chencheng365/p/4186695.html
Copyright © 2020-2023  润新知