先從代碼開始
let a=[3, 15, 8, 29, 102, 22,"a","A"].sort();
console.log(a);
這個(gè)打出來的結(jié)果是
image.png
為什么會(huì)這樣呢?
原因就在于伤锚,sort函數(shù)默認(rèn)是將數(shù)組元素轉(zhuǎn)成字符串進(jìn)行比較的擅笔。
上述代碼要轉(zhuǎn)成升序排列的話,也很簡單屯援,我們只需要把對(duì)比規(guī)則作為sort的參數(shù)傳遞過去就可以了猛们。
let a=[3, 15, 8, 29, 102, 22,"a","A"].sort((a,b)=>{
return a-b;
});
console.log(a);
image.png
反之,降序則返回b-a就可以了狞洋。
如果用的a>b, 就和我們默認(rèn)不傳參數(shù)是一致的弯淘,對(duì)比的是字符串。
倘若我們傳過去的規(guī)則吉懊,系統(tǒng)無法計(jì)算庐橙,那么就會(huì)原樣輸出。比如
let a=[3, 15, 8, 29, 102, 22,"a","A"].sort((a,b,c)=>{
return a+b-c;
});
console.log(a);
image.png