JavaScript排序数字正确吗?

时间:2014-05-28 10:41:20

标签: javascript sorting

我正在尝试对3个数字组进行排序,但是JS排序功能似乎没有以传统方式排序(它按字典顺序排序)。我怎么能接近这个?我想不出一个替代品,它不是一堆嵌套的if语句或开关。

我目前的实施是:

var medianthree = function(param){
    var values = param.split(" ");
    var output = [];
    for(var i = 1; i < (values[0]*3); i+=3){
        var temparr = [];
        temparr.push(values[i], values[i+1], values[i+2]);
        temparr.sort();
        console.log(temparr);
        output.push(temparr[1]);
    }
    output = output.join(" ");
    console.log(output);
}

输入:

medianthree("1 8 808 708")

返回:

["708", "8", "808"] //the temparray log - used to check sorting
["8"] //the output - should be 708

2 个答案:

答案 0 :(得分:3)

默认情况下,sort方法按字母顺序对元素进行排序 http://jsfiddle.net/7s5m9/4/

 function sortNumber(a,b) {
    return parseInt(a) - parseInt(b);
}

var numArray = ["708", "8", "808"];
numArray.sort(sortNumber);
alert(numArray[0] + ',' +  numArray[1] + ',' +  numArray[2] );

更新了字符串数字

答案 1 :(得分:0)

JavaScript中的数组是从零开始的。

使用output.push(temparr[1]);推送第二个元素,即8。

因此,如果您希望它返回第一个值,请使用索引0。