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