sort()如何在JavaScript中工作?

时间:2018-08-12 06:22:59

标签: javascript arrays sorting

我有一段时间在JavaScript中使用sort(),但是今天我遇到了令人困惑的事情。

示例1
这是我尝试对数组进行排序的chrome控制台的快照。

enter image description here 第1步。 aa 是一个用一些整数值标贴的数组。
第2步。 aa.sort()的结果出乎意料,因为黄色突出显示该数组未排序。
第3步。使用排序内部的比较功能**对数组进行排序。而且效果很好。


示例2
这是另一个例子-
enter image description here
只需使用** sort()
即可按默认的升序对数组进行排序,而在示例1 中未发生相同的变化。

我想确切地了解 sort()方法中的内容。

4 个答案:

答案 0 :(得分:3)

请参见MDN

  

默认排序顺序是根据字符串Unicode代码点确定的。

当您按字符串排序时,10020小,因为它会逐个字符地进行测试。

答案 1 :(得分:2)

来自此post

  

默认情况下,sort()方法将值作为字符串排序   字母顺序和升序。

     

这对于字符串非常有效(“ Apple”先于“ Banana”)。然而,   如果数字按字符串排序,则“ 25”大于“ 100”,因为   “ 2”大于“ 1”。

     

因此,sort()方法将产生错误的结果   对数字进行排序时。

     

您可以通过提供“比较功能”来解决此问题。

答案 2 :(得分:0)

Array.prototype.sort()是一个高阶函数。您可以使用compare函数作为参数以获得正确的结果:

let myArray = [6,7,3,5,4,1,45];
myArray.sort((n1, n2) => n1 - n2);
// result => [1, 3, 4, 5, 6, 7, 45]

答案 3 :(得分:-1)

数字将转换为字符串。 所以它是这样的:

myReadGeoNode['scene_view'].getSelectedItems()