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

没弄清楚升序降序的问题

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Array对象 </title>

<script type="text/javascript">

   function sortNum(a,b) {

   return a - b;

   }  //实现升序功能?这样写为什么就能实现升序功能

   function asortNum(a,b) {

       return b - a;

   } //实现降序功能?为什么能起到降序作用。

var myarr = new Array("80","16","50","6","100","1");

document.write(myarr.sort(sortNum)+"<br/>");

document.write(myarr.sort(asortNum));

</script>

</head>

<body>

</body>

</html>

这段代码实现了数组元素的升序和降序排列。关键是sort里面的函数起到了作用。可是那个函数为什么是这样写的,只是定义了a和b,并没有定义a-b是大于0还是小于0  为什么就是升序了。。。。


提问者:卡兰尼克 2016-11-21 23:30

个回答

  • A空城
    2016-11-22 09:36:25

    想复杂了,a-b  不是a减b的意思,是a至b。b-a也是同理。我们英文字母 正常 排序是不是a,b,c,d,e,f,g。所以a至b就是正序,b-a就是倒序。 不关什么大于0,小于0的什么事。

  • 水里有条鱼
    2016-11-22 09:28:14

    return a-b;
    80-16=64;
    80-50=30;
    80-6-74;
    80-100=-20;
    80-1=79;
    79,74,64,30,-20;
    1,6,16,50,100;
    /////////////
    return b-a;
    16-80=-64;
    50-80=-30;
    6-80=-74;
    100-80=20;
    1-80=-79;
    20,-30,-64,-74,-79;
    看的懂就看,看不懂就算了
    100,50,16,6,1;

    ------------------------------------------------------来自问题评论 ------menghuanbaolei


    意思是说a-b就是用第一个数减去其他数,结果由大到小排序,是不是结果越小,对应的数就越大。

    所以79,74,64,30,-20 -------->1,6,16,50,100 是由小到大排序的

    b-a的话其他数减去第一个数,结果有大到小排序,是不是结果越小,对应的数就越小

    所以20,-30,-64,-74,-79  ---------------->100,50,16,6,1是由大到小排序的