这节课中的对于数字降序和升序的排列是怎么完成的?

这节课中的对于数字降序和升序的排列是怎么完成的?

arr.sort(function(a,b){return b-a});为什么 return b-a就可以完成降序了?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

sort()方法使数组中的元素按输入代码照一定的顺序排列。

语法:

arrayObject.sort(方法函数)

参数说明:

1.如果不指定<方法函数>,则按unicode码顺序排列。

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

myArray.sort(sortMethod);

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

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

1.使用sort()将数组进行排序,代码如下:

<script type="text/javascript">
  var myarr1 = new Array("Hello","John","love","JavaScript"); 
  var myarr2 = new Array("80","16","50","6","100","1");
  document.write(myarr1.sort()+"<br>");
  document.write(myarr2.sort());
</script>

 运行结果:

Hello,JavaScript,John,love

1,100,16,50,6,80   

注意:上面的代码没有按照数值的大小对数字进行排序。

2.如要实现这一点,就必须使用一个排序函数,代码如下:

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

运行结果:

80,16,50,6,100,1
1,6,16,50,80,100

这是内部的机制,原理作为了解,先掌握如何来使用呦。希望对你有帮助,祝学习愉快,欢迎采纳。


莨菽菽 2017-06-06 15:40:38

个人理解:这个应该是sort()方法封装了一个冒泡排序的方法,根据返回值的正负值来决定是否互换位置:举个例子,return a-b;由于隐式转换,这里a b会变成Number,根据大小返回一个值,如果a>b,返回正数,这样sort里面封装的函数就设置默认返回正数就互换,负数就不互换,这样就实现了降序,而return b-a刚好是相反的情况,比如还是a>b,这里就返回负数,不进行互换,这样就实现了降序----------------------------------js这种动态语言就是这样,各种封装,可能很多方法就只能背背背,感觉这样不利于深入理解原理

steven_hui 2017-04-13 11:22:17

  若返回值<=-1,则表示 A 在排序后的序列中出现在 B 之前。   B比A大,应该A在B的后面才对啊
  若返回值>-1 && <1,则表示 A 和 B 具有相同的排序顺序。
  若返回值>=1,则表示 A 在排序后的序列中出现在 B 之后。   A比B大,应该A在B的前面才对啊?为什么呢?

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师