你能帮助我理解Javascript中的sort()是如何工作的吗?

时间:2015-08-09 00:49:27

标签: javascript arrays sorting unicode

我一般都知道如何在javascript中运行此方法,但我还不了解如何使用UNICODE命令数组...

实施例

var fruits = [
["caldera Cuicocha",1],
["Telica",2],    
];

我相信订单没有改变,因为这封信" c"在字母之前" t" ...

但是

fruits.sort();

输出是这样的:

//Telica
//caldera Cuicocha
你愿意向我解释为什么这么好吗? 是否发生了unicode字符的计算?

2 个答案:

答案 0 :(得分:3)

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"caldera Cuicocha,1"之后"Telica,2"按预期对数组进行排序。

答案 1 :(得分:1)

这是一个排序功能,它可以做你想要的:

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期望从其排序函数返回的内容。然后:

fruits.sort(sortfunc)