javascript整数失败

时间:2016-11-20 13:09:59

标签: javascript

此代码必须有一些非常简单的错误,但它并没有排序。那是为什么?

  $(document).ready(function () {
            var topArray = [];
            topArray.push(1000);
            topArray.push(298);
            topArray.push(2000);
         topArray.sort();
            alert(topArray[0] + "," + topArray[1] + ", " + topArray[2]);
        })

3 个答案:

答案 0 :(得分:0)

您需要按数字排序数字,而不是字符串,这是默认排序。

  

Description

     

如果未提供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]);
    })