亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

這個排序函數看不懂

function sortNum(a,b) {

? ? ? ?return a - b;

? ?}

var myarr = new Array("80","16","50","6","100","1");

document.write(myarr.sort(sortNum));

  1. return a - b; 這是什么意思?返回 a與b的差? 不是說要返回大或者小的那個嗎?

  2. 這個函數接收兩個參數a和b 而下面運用的時候卻傳了個數組過來是什么操作? 按之前的知識如果要比較數字數組不是for循環,依次比較myarr[i]和myarr[i+1] 然后返回大或小的那個然后在進行排序嗎。這里直接這樣不懂。


正在回答

5 回答

你有沒有發現如果a<b,a-b總是取得負數,這就能夠實現升序排列。

0 回復 有任何疑惑可以回復我~

意思應該是sort 會吧數組里面的數據依次導入sortNum(a,b)這個函數里面,然后根據它返回的數值,負值,0,正值,來排序

0 回復 有任何疑惑可以回復我~

剪切以下代碼到你瀏覽器的console. 你就能看到它是如何排序的。

var myarr = new Array("80","16","50","6","100","1");

myarr = myarr.sort(function(a,b){ console.log("a - b", a - b); document.write(myarr + "<br>"); return a - b});


0 回復 有任何疑惑可以回復我~

就是因為沒有賦值,因為本身a>b。不信你把a,b換成e,f或者m,o,會是一樣的---就好比體育課說按按大小個排列一樣,老師給的手勢就是a-b或者b-a的意思。。。。賦值了反而亂了。

1 回復 有任何疑惑可以回復我~

額 這個sortNum(a,b)就是一個特殊的數字排序的函數,當 a == b的時候為0,a > b的時候為1, a < b 的時候為 -1

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

系Lillian

還是不太懂,a和b沒賦值,且,為什么a-b就是升序,b-a時就是降序?
2018-07-17 回復 有任何疑惑可以回復我~
#2

風起臨冬

sortNum是關鍵詞嗎,換成其他詞能不能行
2018-07-31 回復 有任何疑惑可以回復我~
#3

挽安0 回復 風起臨冬

sortNum也就是函數 隨意取的 function看見這個就知道了
2018-08-02 回復 有任何疑惑可以回復我~
#4

扁扁1 回復 系Lillian

你去看java集合類比較器,comparable類,就是二叉樹數據結構,我猜這個JS底層跟這個一樣,返回1,說明是正數,則a大于b,你可以去看看
2018-08-06 回復 有任何疑惑可以回復我~
查看1條回復

舉報

0/150
提交
取消

這個排序函數看不懂

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號