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

这段代码中,return a-b;是如何实现对数值大小进行排序的?谢谢

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

正在回答

6 回答

我来最后补充回答一下,首先要明白两点:

1、关于sort(sortby)中的sort排序机制,也就是关于sortby函数作为sort()参数来指导sort()的排序方式,详情见 JavaScript sort() 方法 这是w3c的介绍,理解这个的重点就是这几句话:http://img1.sycdn.imooc.com//5764369f0001654406000072.jpg

换句话说就是:1.返回值小于0,a,b在数组中顺序不变

                        2.返回值小于0,a,b在数组中顺序不变,(变不变有什么区别呢 - -!)

                        3.返回值大于0,a,b在数组中顺序交换

        

*请注意上面几行是排序的规定,就像1+1=2一样,是 javascript约定俗成的规定!!!!!


2、排序方法sort()中的执行过程(算法问题)不必深究,我的理解是以循环比较的方式排列出来了,你只要明白计算机使出浑身解数以你制定的规则(sortby)循环比较,把你想要的排列展现出来了。

--------------------------------------分割线------------分割线------------------------------------------------------

eg:那么在这段代码中 我来以 return a-b 为什么是升序为例来解释一下

<script type="text/javascript">
 function sortNum(a,b) {
 return a - b;

var arr = [1,11,3,4,5];

alert(arr.sort(sortNum));     //[1,3,4,5,11]

</script>

当开始排序的时候,

首先把a=1和b=11作为参数传到sortNum(a,b)中,由于1-11<0,按照规定中的第1条,1,11在数组中顺序不变;

……此处省略中间相似循环比较……

在排序到了数值11的时候,举例11和3比较,把a=11和b=3作为参数传数sortNum(a,b)中,由于11-3>0,按照规定中的第3条,排序后,11和3交换位置。

这样在经历了不知道多少次的循环比较之后,数组的输出就变成了[1,3,4,5,11],也就是我们理解的升序排列,同理可以理解b-a了吧~~~

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

cjy小靠谱

请问一下 b - a 也是遵循 b < a , b排前面的规则,那输出的也应该是升序(我以为a,b就是一个符号而已,这种想法在这边是不是不适用?)
2016-11-21 回复 有任何疑惑可以回复我~

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

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

function sortNum() 返回的是 a减b的值

myarr.sort(sortNum)相当于myarr.sort(a-b)

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


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

试试这个Arrays.sort();

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

具体怎么排序需要看看js引擎使用那种算法了(可以看浏览器源码或查相关的资料,反正我是不知道)。。

你传入的这个函数只是告诉引擎规则,是升序?还是降序?

0 回复 有任何疑惑可以回复我~
1.myarr.sort(sortNum)是这个排序方法


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

举报

0/150
提交
取消

这段代码中,return a-b;是如何实现对数值大小进行排序的?谢谢

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