我正在尝试对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
答案 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。