为了账号安全,请及时绑定邮箱和手机立即绑定

这个排序函数看不懂

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 回答

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

剪切以下代码到你浏览器的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});


0 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~

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

2 回复 有任何疑惑可以回复我~
#1

系Lillian

还是不太懂,a和b没赋值,且,为什么a-b就是升序,b-a时就是降序?
2018-07-17 回复 有任何疑惑可以回复我~
#2

风起临冬

sortNum是关键词吗,换成其他词能不能行
2018-07-31 回复 有任何疑惑可以回复我~
#3

挽安0 回复 风起临冬

sortNum也就是函数 随意取的 function看见这个就知道了
2018-08-02 回复 有任何疑惑可以回复我~
#4

扁扁1 回复 系Lillian

你去看java集合类比较器,comparable类,就是二叉树数据结构,我猜这个JS底层跟这个一样,返回1,说明是正数,则a大于b,你可以去看看
2018-08-06 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

这个排序函数看不懂

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信