我有一段时间在JavaScript中使用sort(),但是今天我遇到了令人困惑的事情。
示例1
这是我尝试对数组进行排序的chrome控制台的快照。
第1步。 aa 是一个用一些整数值标贴的数组。
第2步。 aa.sort()的结果出乎意料,因为黄色突出显示该数组未排序。
第3步。使用排序内部的比较功能**对数组进行排序。而且效果很好。
我想确切地了解 sort()方法中的内容。
答案 0 :(得分:3)
答案 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()