[英]Can you help me to understand how works sort() in Javascript?
我一般都知道這種方法在javascript中是如何工作的,但是我還不了解如何用UNICODE命令數組。
例:
var fruits = [
["caldera Cuicocha",1],
["Telica",2],
];
我相信順序不會改變,因為字母“ t”之前的字母“ c” ...
但隨着
fruits.sort();
輸出是這樣的:
//Telica
//caldera Cuicocha
您願意向我解釋原因嗎? Unicode字符的計算發生了什么?
默認情況下, sort
比較字符串。 這意味着["caldera Cuicocha",1]
和["Telica",2]
都首先轉換為字符串: "caldera Cuicocha,1"
和"Telica,2"
。 將Array
轉換為字符串等效於join
其與,
聯接。
現在您已經正確地注意到排序基於Unicode。 大寫字母在小寫字母之前 ,但是:
Char Hex-Code
A 41
B 42
… …
Z 5A
… …
a 61
b 62
… …
z 7A
sort
按期望的方式對數組sort
排序,並在 "Telica,2"
之后添加"caldera Cuicocha,1"
"Telica,2"
。
這是一個排序函數,它將執行您想要的操作:
function sortfunc(a, b) {
var cmpa = a[0].toLowerCase(), cmpb = b[0].toLowerCase();
return cmpa < cmpb ? -1 : cmpa > cmpb ? +1 : 0;
}
換句話說,取兩個數組中每個數組的第一個元素為小寫,然后比較並返回-1,+ 1或0,這是sort
從其sort函數返回的結果。 然后:
fruits.sort(sortfunc)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.