问答详情
源自:7-22 数组排序sort()

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为什么是升序?

提问者:任岩 2016-09-29 22:13

个回答

  • 慕粉3951534
    2016-10-11 14:04:10
    已采纳

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

    首先,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 的理解。

  • 慕粉4082765
    2016-09-29 22:25:14

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

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