此代码必须有一些非常简单的错误,但它并没有排序。那是为什么?
$(document).ready(function () {
var topArray = [];
topArray.push(1000);
topArray.push(298);
topArray.push(2000);
topArray.sort();
alert(topArray[0] + "," + topArray[1] + ", " + topArray[2]);
})
答案 0 :(得分:0)
您需要按数字排序数字,而不是字符串,这是默认排序。
如果未提供
compareFunction
,则通过将元素转换为字符串并按Unicode代码点顺序比较字符串对元素进行排序。例如,“香蕉”出现在“樱桃”之前。在数字排序中,9出现在80之前,但由于数字被转换为字符串,因此“80”以Unicode顺序出现在“9”之前。
topArray.sort(function (a, b) {
return a - b;
});
答案 1 :(得分:0)
在默认的Array#sort
方法中,基于字符串比较进行排序,实现自定义排序功能。
topArray.sort(function(a, b){ return a - b; });
<小时/> 来自MDN docs:
如果未提供 compareFunction ,则会通过将元素转换为字符串并按Unicode代码点顺序比较字符串对元素进行排序。例如,“香蕉”出现在“樱桃”之前。 在数字排序中,9位于80之前,但由于数字转换为字符串,因此“80”在Unicode顺序中位于“9”之前 。
答案 2 :(得分:0)
为其添加排序选项,如下所示: http://www.w3schools.com/jsref/jsref_sort.asp
$(document).ready(function () {
var topArray = [];
topArray.push(1000);
topArray.push(298);
topArray.push(2000);
topArray.sort((function(a, b){return a-b}));
alert(topArray[0] + "," + topArray[1] + ", " + topArray[2]);
})