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

sort(方法函数)其中自定义的方法函数看不明白

.如果指定<方法函数>,则按<方法函数>所指定的排序方法排序。

myArray.sort(sortMethod);

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

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


方法函数这样说明,要有两个参数a和b,然后还要有返回值,根据返回值的不同产生不同的排序顺序效果,那么这里是怎么产生返回值的,怎么使用参数a和b

为什么return a-b就是升序,return b-a就是降序,看不明白


正在回答

3 回答

return a-b,如果a<b,那么就是负值,a就排在前面,如果a>b,那么就是正值,那么a就排在后面,所以就小的排前,大的排后,就是升序;

return b-a,如果b<a,负值,a就排在前面,如果b>a,正值,a就排在后面,所以就大的排前,小的排后,就是升序


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

qq_在迷宫_0 提问者

非常感谢!
2016-11-21 回复 有任何疑惑可以回复我~

我也没看懂是什么意思。。。。如果你懂了回我一下

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

qq_在迷宫_0 提问者

传入两个值即用a,b这两个数字来类比排序这个过程,a是排在b之前的.然后在这里是重点了,用a-b,或者b-a来说明这两个数字是升序还是降序的,如果要是以升序的方式来排a和b,按我们的比较方式,就是用a-b得到的值比较两个的大小,要是小于0,就和我们刚开始传进来的,a和b的顺序一样,要是大于0,a和b就要调换下位置了.那么如果要是以降序的方式来排呢,如果还是以a-b的方式的话,要是小于0,就和我们刚开始传进来的那个顺序相反了,这时候就要调换b在a前面,要是大于0,a和b就不用调换位置了.说到这里你不知道能懂不,所以这个时候一开始a和b传进来的顺序不变,以a-b就会代表升序,以b-a就会代表降序
2016-11-21 回复 有任何疑惑可以回复我~
#2

qq_在迷宫_0 提问者

return a-b,如果a<b,那么就是负值,a就排在前面,如果a>b,那么就是正值,那么a就排在后面,所以就小的排前,大的排后,就是升序; return b-a,如果b<a,负值,a就排在前面,如果b>a,正值,a就排在后面,所以就大的排前,小的排后,就是升序 再贴上上一个回答者的
2016-11-21 回复 有任何疑惑可以回复我~
#3

卡兰尼克 回复 qq_在迷宫_0 提问者

<script type="text/javascript"> function sortNum(a,b) { return a - b; //升序,如降序,把“a - b”该成“b - a” } var myarr = new Array("80","16","50","6","100","1"); document.write(myarr + "<br>"); document.write(myarr.sort(sortNum)); </script> 那这串代码没有给a,b定义,是不是比较函数不需要定义,直接用a-b,b-a这样就可以了。
2016-11-21 回复 有任何疑惑可以回复我~
#4

卡兰尼克 回复 卡兰尼克

a,b也没有写谁是负值
2016-11-21 回复 有任何疑惑可以回复我~
查看1条回复

W3C的原文是这样的:

若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

若 a 等于 b,则返回 0。

若 a 大于 b,则返回一个大于 0 的值。 


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

举报

0/150
提交
取消

sort(方法函数)其中自定义的方法函数看不明白

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