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

这个排序函数看不懂

function sortNum(a,b) {

       return a - b;

   }

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

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

  1. return a - b; 这是什么意思?返回 a与b的差? 不是说要返回大或者小的那个吗?

  2. 这个函数接收两个参数a和b 而下面运用的时候却传了个数组过来是什么操作? 按之前的知识如果要比较数字数组不是for循环,依次比较myarr[i]和myarr[i+1] 然后返回大或小的那个然后在进行排序吗。这里直接这样不懂。


提问者:ZKKL 2018-06-28 12:32

个回答

  • 沈夜
    2019-06-08 16:03:55

    你有没有发现如果a<b,a-b总是取得负数,这就能够实现升序排列。

  • qq_旧巷少年_cfmpFS
    2018-10-12 15:21:56

    意思应该是sort 会吧数组里面的数据依次导入sortNum(a,b)这个函数里面,然后根据它返回的数值,负值,0,正值,来排序

  • 慕容13192403
    2018-09-05 14:57:28

    剪切以下代码到你浏览器的console. 你就能看到它是如何排序的。

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

    myarr = myarr.sort(function(a,b){ console.log("a - b", a - b); document.write(myarr + "<br>"); return a - b});


  • 一叶红尘
    2018-07-28 13:31:25

    就是因为没有赋值,因为本身a>b。不信你把a,b换成e,f或者m,o,会是一样的---就好比体育课说按按大小个排列一样,老师给的手势就是a-b或者b-a的意思。。。。赋值了反而乱了。

  • ZKKL
    2018-06-28 14:27:46

    额 这个sortNum(a,b)就是一个特殊的数字排序的函数,当 a == b的时候为0,a > b的时候为1, a < b 的时候为 -1