您的位置:首页 > Web前端 > javascript > 正文

JS中sort()和reverse()

更多 时间:2014-9-16 类别:Web前端 浏览量:442

JS中sort()和reverse()

JS中sort()和reverse()

一、JS中sort()

 

sort()方法按升序排列数组——即最小的值位于最前面,最大的值排在最后面。为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到字符串,以确定如何排序。即使数组中的每一项都是数值,sort()方法比较的也是字符串。
 

sort()语法

arrayObject.sort(sortby)

其中:sortby 可选,用来规定排序顺序,必须是函数

 

sort()说明

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

 

1、若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

2、若 a 等于 b,则返回 0。

3、若 a 大于 b,则返回一个大于 0 的值。

 

sort()实例

 

1、sort不带比较函数方法

 

var values = [0,1,5,10,15];
values.sort();
alert(values);

输出结果: 0,1,10,15,5

 

这种排序方式在很多情况下都不是最佳方案。因此sort()方法可以接受一个比较函数作为参数,以便我们指定那个值位于那个值的前面。

 

2、sort带比较函数方法

比较函数接受两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等,则返回0,如果第一个参数位于第二个之后则返回一个正数。

 

  •  
  • JScript 代码   复制
  • 
    function compare(value1, value2) { 
    
       if (value1 < value2) { 
    
           return -1; 
    
       } else if (value1 > value2) { 
    
           return 1; 
    
       } else { 
    
           return 0; 
    
       } 
    
    } 
    
    		

  • 这个比较函数可以使用于大多数数据类型,只要将其作为参数传递给sort()方法即可,如下面这个例子所示:

     

    var values = [0, 1, 2, 5, 10, 15];

    values.sort(compare);

    alert(values);  //0,1,5,10,15

     

     

    二、JS中reverse()

     

    当我们进行升序排序后,然后数组在调用reverse()方法将数组逆序,这样就可以实现数组的降序排序了。
     

    例如

     

    var values = [0, 1, 2, 5, 10, 15];

    values.sort(compare).reverse();

    alert(values);  //0,1,5,10,15

     

    标签:sort()