zoukankan      html  css  js  c++  java
  • 对数组的操作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]整个用来添加,而不是拆开)

  • 相关阅读:
    ant 软件包不存在报错
    在 Internet Explorer 中使用 Windows 窗体控件
    智能客户端
    Back to the Future with Smart Clients
    "Automation 服务器不能创建对象" 的解决方案
    Top 10 Reasons for Developers to Create Smart Clients
    Updater Application Block for .NET
    Smart Client Application Model and the .NET Framework 1.1
    Security and Versioning Models in the Windows Forms Engine Help You Create and Deploy Smart Clients
    智能客户端技术总结(二)
  • 原文地址:https://www.cnblogs.com/chencheng365/p/4186695.html
Copyright © 2011-2022 走看看