问答详情
源自:7-22 数组排序sort()

数组排序问题

function sortNum(a,b) {

       return a-b;

}

这个怎么就能实现升序排序了?怎么这个样子



提问者:_夕晨踏雪 2016-06-12 21:43

个回答

  • 慕容6328150
    2016-06-18 17:01:32

    注意: 该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下: 

      若返回值<=-1,则表示 A 在排序后的序列中出现在 B 之前。
      若返回值>-1 && <1,则表示 A 和 B 具有相同的排序顺序。
      若返回值>=1,则表示 A 在排序后的序列中出现在 B 之后。

    原文中说的:(以上),a-b<=-1(因为这里是a,b整数)那么a就是排在b之前。。所以就是升序小的排在前面。。。sort 是根据反回值来操作哪个做前面哪个做后面的。。而return a-b  就是给sort的返回值,然后sort再进行判断,最后就是升序    如果下b-a 那就是降序 

  • entilo
    2016-06-12 23:17:59

    方法错误这个不能排序 可以用function Gba(a,b){ return a?b?a:b} 这样一句话来排序

  • ginkl
    2016-06-12 23:07:12

    这个只是一个比较两个数大小的函数,并不是用来排序的。 sort()才是排序函数,array.sort()这个函数自己会进行一些排序的算法,具体我不知道他用的是什么,大概也就是哪几种,快排,冒泡,归并之类的,这个不用管。但是排序需要一个标准,那就是如何比较两个数的大小,这个你可以告诉这个sort函数,或者叫做指定。所以你问的这个函数,相当于告诉sort函数,如果a-b>0,那么a排在b的后面,a-b<0排在前面,a=b两个相等,两个一样。另外我觉得课程里说的有点困惑,按照Javascript的文档描述,传递给sort()的函数,返回值应该是>0,<0 和=0,并不是和1,-1相关。