我正在尝试对 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
最佳答案
默认情况下,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] );
更新了您的字符串编号
关于JavaScript 正确排序数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23909402/