簡體   English   中英

您可以幫助我了解Java中sort()的工作方式嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM