码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-12-26 16:17:09      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:

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]整个用来添加,而不是拆开)

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

标签:

原文地址:http://www.cnblogs.com/chencheng365/p/4186695.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!