為什么return a-b可以決定升降序?
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Array對象 </title>
<script type="text/javascript">
? ?function sortNum(a,b) {
? ? return a-b;
? ?}
var myarr = new Array("80","16","50","6","100","1");
document.write(myarr.sort(sortNum));
</script>
</head>
<body>
</body>
</html>
還有就是document.write(myarr.sort(sortNum));與document.write(myarr.sort(sortNum()));的區(qū)別,求大牛解釋
2016-08-06
權(quán)威指南上的定義希望能幫到你·~
2016-08-05
這個(gè)函數(shù)的定義:myArray.sort(sortMethod);
注意:?該函數(shù)要比較兩個(gè)值,然后返回一個(gè)用于說明這兩個(gè)值的相對順序的數(shù)字。比較函數(shù)應(yīng)該具有兩個(gè)參數(shù) a 和 b,其返回值如下:?
? 若返回值<=-1,則表示 A 在排序后的序列中出現(xiàn)在 B 之前。
? 若返回值>-1 && <1,則表示 A 和 B 具有相同的排序順序。
? 若返回值>=1,則表示 A 在排序后的序列中出現(xiàn)在 B 之后。
按照定義:
若a-b<=-1即b-a>1 ,排序?yàn)锳B(B較大)
? ?a-b>=1 ?則排序?yàn)锽A (A較大)
也就是說較大的排在后面。。升序。。反之,b-a為降序。。。
2016-08-02
你是不是想問有沒有括號的區(qū)別?我覺得是這樣,sort()里面調(diào)用的是方法而不是屬性,就像array.length中l(wèi)ength是屬性,所以不需要加括號,而mystr.toUpperCase()中toUpperCase()是方法名,所以調(diào)用時(shí)需要加上括號。這里同理,你在script中寫的是"function sortNum()",可見sortNum()被定義為一個(gè)方法,那么調(diào)用該方法時(shí)就應(yīng)該加上括號,才是完整的方法名~不知道我說的是不是你要的~
2016-07-31
我認(rèn)為,不是說function(a,b)在排序,排序的還是sort()函數(shù),function(a,b)只是給一個(gè)排序的依據(jù),而return a-b就是一種最常見的排序依據(jù)——按從小到大排。至于為什么,首先這是一個(gè)方法,就像定時(shí)器一樣的方法,js就是這么設(shè)定的,我也不知道。
2016-07-31
可以這樣理解,不要理解成a減b的意思,理解成在26個(gè)字母中a到b的意思,在26個(gè)字母中b比a大,所以寫成a-b就是升序,寫成b-a就是降序。