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-10-11
我剛學編程遇到這個函數的時候和你有一樣的困擾,但用多了就自然明白了。
首先,return 是返回一個值到函數外,在調用函數的地方能夠接收這個值,在這里,return 返回的是 a-b 的值。
第二個問題,a 和 b 是怎么回事。
我們看到 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 的理解。
2016-09-29
return是返回值,return的值在sort()函數中使用。
sort函數參數規定>=1則a的排序在排序后數列中在b之后。a-b你可以理解為數值的比較(>=1, <=-1 , -1<return<1)。根據return的值進行排序