Js数组排序函数sort()

JS实现多维数组和对象数组排序,用的其实就是原生sort()函数,语法为:arrayObject.sort(sortby)(sortby 可选。规定排序顺序。必须是函数。)

  返回值为对数组的引用;请注意,数组在原数组上进行排序,不生成副本。

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

  eg:

<script type="text/javascript">

    var arr = new Array(6)
    arr[0] = "a"
    arr[1] = "f"
    arr[2] = "c"
    arr[3] = "e"
    arr[4] = "b"
    arr[5] = "d"

    document.write(arr + "<br />")
    document.write(arr.sort())

</script>

 输出:

a,f,c,e,b,d
a,b,c,d,e,f 

 

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

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

function NumAscSort(a,b)
{
 return a - b;
}
function NumDescSort(a,b)
{
 return b - a;
}
var arr = new Array( 1, 0, 3, 2, 0 ); 
arr.sort(NumDescSort);
alert(arr);
arr.sort(NumAscSort);
alert(arr);
arr.sort();
alert(arr);

 

posted @ 2016-10-16 21:07  Geminiyu  阅读(5002)  评论(0编辑  收藏  举报