繁体   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