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

js函数语法问题

( ╯□╰ ),小白问一下各位大大,这里的 return a - b 到底是嘛子个意思?

提问者:墨小漓 2016-08-31 16:33

个回答

  • 慕粉1469604703
    2016-09-01 17:24:22
    已采纳

    参考了一些资料跟大神们的解释,自己理解是这样的:

    1,sort的入参是一个function
    2,sort根据function的参数和返回值对数组进行排序。 

    比如参数是a,b,他们就是数组里的俩元素,返回值大于0表示a排在b后面,这样a>b,a-b>0,a在b的后面,a>b升序;而a<b,b-a>0,a在b的后面,a<b降序。

    看一下定义:

    myArray.sort(sortMethod);

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

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

    可能在函数内部还有一些算法,类似C语言的冒泡排序法,来真正实现升序跟降序的排序。

    不知道理解的对不对,嘿嘿

      

  • 墨小漓
    2016-08-31 21:09:35

    o(^▽^)o 哈哈,谢谢你们的耐心解答。

    你们说的小白知道了。

    ( ╯□╰ ),小白要问的不是减法的问题。看下面这段代码。

    <!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里面的函数起到了作用。可是那个函数为什么是这样写的。小白很不解。


  • 乖乖雪
    2016-08-31 17:05:54

    a,b 是数字参数 ,a-b就是简单减法运算

  • imalwayshere
    2016-08-31 16:59:30

    就是返回 a减去b的值。

    比如下面这个函数返回a与b的差:

    function sub(a, b) {
        return a-b;
    }

    如果我们调用:

    var result = sub(5, 3);
    alert(result);

    那么浏览器就会弹框显示一个数字2。

    ----

    那么在这里也和上面的函数sub()一样,返回一个值。需要注意的是,如果函数返回值了,那么return语句后面的代码就不会被执行了。