数字数组排序错误
Array of numbers sort is wrong
今天我发现了一些关于数组原型sort
的有趣之处。
var numbers = [1,7,23,11,50,60];
所以我创建了一个数字数组,并想对它们进行排序。所以我用
console.log(numbers.sort()) //-> [1, 11, 23, 50, 60, 7]
结果很奇怪,[1, 11, 23, 50, 60, 7]
.排序功能有什么问题?
var numbers = [1,7,23,11,50,60];
alert(numbers.sort())
sort()
将对所有成员调用toString()
,因此它们被转换为字符串,并且您得到错误的排序顺序。
您必须手动传递比较器。
function comparator(x,y) {
return x - y;
}
numbers.sort(comparator);
如果你想
按整数排序,就这样做。正常排序的比较函数将整数转换为字符串,然后比较它们。
function sortNumber(a,b) {
return a - b;
}
var numArray = [1,7,23,11,50,60];
numArray.sort(sortNumber);
输出
[1, 7, 11, 23, 50, 60]
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- Javascript中的多维数组排序索引问题
- AngularJS错误处理:根据错误数组显示错误
- [可能的错误]数组中作为对象属性的值设置为未定义
- 如何按日期对Javascript对象数组排序
- 数组排序后显示更改
- 当许多元素相等时,Javascript数组排序无法正常工作
- Javascript数组排序速度受字符串长度的影响
- 按唯一键将对象数组排序为数组
- 以 js 为单位的数组排序
- js 数组排序无法正常工作
- 数组排序.论点从何而来
- 不需要的数组排序
- 数组排序不正确/不可预测,使用 indexOf 时
- Javascript将数组排序到树中
- 随后的多维数组排序会产生意外的结果
- 数组排序基于纯javascript搜索文本匹配
- Javascript自定义数组按数组排序
- 使用字符串按属性错误对对象进行数组排序
- 多维数组排序