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

javascript 数组排序sort

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

return是什么意思?

return a-b为什么是升序?

正在回答

2 回答

我刚学编程遇到这个函数的时候和你有一样的困扰,但用多了就自然明白了。

首先,return 是返回一个值到函数外,在调用函数的地方能够接收这个值,在这里,return 返回的是 a-b 的值。

第二个问题,a 和 b 是怎么回事。

我们看到 sortNum 函数的调用形式,

myarr.sort(sortNum)

是将 sortNum 作为参数传到 sort 函数中,而 sort 函数是系统自带的数组函数,由系统实现函数功能。

sortNum 函数要带两个参数也是系统所规定好的,在进行排序时,系统会按顺序(从下标 0 一个个往后),将数组中的元素作为 a 和 b 参数传入 sortNum 中。

比如,数组myarr,第一次传入下标 0 元素 myarr[0] 作为 a,下标 1 元素 myarr[1] 作为 b,算出 a-b 的值,<=-1 则 a 在 b 前面,==0 则顺序不变,>=1 则 b 在前 a 在后。比较完 myarr[0] 和 myarr[1],向后移一位,进行 myarr[1] 和 myarr[2] 的比较,这时,myarr[1] 是 a,myarr[2] 是 b,以此类推。

在这个例子中,我们是用 a-b 来计算出需要 return 的值,你也可以根据自己的需求通过别的方式算出 return 的值进行排序。

至于排序方法,不知道你有没有看过“冒泡排序法”,如果没有建议去看一下,是比较基础和经典的排序算法,每个语言都有相应的实现,看完也能加深对 sort 的理解。

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

任岩 提问者

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

return是返回值,return的值在sort()函数中使用。

sort函数参数规定>=1则a的排序在排序后数列中在b之后。a-b你可以理解为数值的比较(>=1, <=-1 , -1<return<1)。根据return的值进行排序

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

任岩 提问者

还是不太懂,a-b是怎么比较的?它们并没有赋值。
2016-09-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       466961    人
  • 解答问题       21874    个

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

进入课程

javascript 数组排序sort

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