<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为什么是升序?
我刚学编程遇到这个函数的时候和你有一样的困扰,但用多了就自然明白了。
首先,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 的理解。
return是返回值,return的值在sort()函数中使用。
sort函数参数规定>=1则a的排序在排序后数列中在b之后。a-b你可以理解为数值的比较(>=1, <=-1 , -1<return<1)。根据return的值进行排序