<分区>
以下代码对数组中的整数进行错误排序,结果为:1,10,100,30,40,50,80
var arr = new Array();
arr = [50,100,30,40,80,10,1];
var z = arr.sort();
console.error(z);
标签 javascript
<分区>
以下代码对数组中的整数进行错误排序,结果为:1,10,100,30,40,50,80
var arr = new Array();
arr = [50,100,30,40,80,10,1];
var z = arr.sort();
console.error(z);
最佳答案
根据 Array.prototype.sort 的文档,“默认排序顺序是根据字符串 Unicode 代码点。”这将为您提供一个词法排序,您通常不需要对数字进行排序。
具体来说,section 22.1.3.24.1的 ECMAscript spec定义普通排序函数,第 5 步和第 7 步将参数显式转换为字符串:
- Let
xString
be ToString(x
).- ReturnIfAbrupt(
xString
).- Let
yString
be ToString(y
).- ReturnIfAbrupt(
yString
).- If
xString < yString
, return −1.- If
xString > yString
, return 1.- Return +0.
您应该提供自己的排序函数,不将值视为字符串,例如:
var arr = new Array();
arr = [50, 100, 30, 40, 80, 10, 1];
var z = arr.sort(function(a, b) {
if (a < b) return -1;
if (b < a) return +1;
return 0;
});
console.log(z);
关于javascript数组方法排序返回大于50的120,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37463901/