关于javascript的sort()函数

  今天遇见一个问题。

  var arr = [3,1,16,34,7,8];

  arr.sort();

  返回结果是[1,16,3,34,7,8]。和我想要取得的结果不同。

  看了下接口说明。

  arrayObject.sort(sortby).

  sortby必须是函数。  

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

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

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

  若 a 等于 b,则返回 0。

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

  看完后,用个函数试下。

  升序

  function ascend(a, b) {

    return a-b;

  }

  降序 

  function desc(a, b) {

    return b-a;

  }

  测试了下,升序arr.sort(ascend)和降序arr.sort(desc).都没问题。

 

原文地址:https://www.cnblogs.com/zzcflying/p/2511648.html