这个排序函数看不懂

来源:7-22 数组排序sort()

ZKKL

2018-06-28 12:32

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] 然后返回大或小的那个然后在进行排序吗。这里直接这样不懂。


写回答 关注

5回答

  • 沈夜
    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

    扁扁1 回复系Lilli...

    你去看java集合类比较器,comparable类,就是二叉树数据结构,我猜这个JS底层跟这个一样,返回1,说明是正数,则a大于b,你可以去看看

    2018-08-06 16:04:39

    共 4 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题