试图从我知道的数组中获得最高和最低值只包含整数似乎比我想象的要难.
var numArray = [140000, 104, 99];
numArray = numArray.sort();
alert(numArray)Run Code Online (Sandbox Code Playgroud)
我希望这能表明99, 104, 140000.相反它显示104, 140000, 99.所以似乎排序是将值作为字符串处理.
有没有办法让sort函数实际对整数值进行排序?
可能重复:
排序不使用整数?
如何在javascript排序方法中对数字进行排序
Array.sort()不能正确排序数字
码:
var x = [40,100,1,5,25,10];
x.sort();
Run Code Online (Sandbox Code Playgroud)
输出:
1,10,100,25,40,5
Run Code Online (Sandbox Code Playgroud)
我的预期产量:
1,5,10,25,40,100
Run Code Online (Sandbox Code Playgroud) 如果我要运行"[6,3,8,7,5,2,1,9,4,0] .sort()"我得到"[0,1,2,3,4,5,6, 7,8,9]"作为你期望的输出.它将数字从最小到最大排序.但如果我要运行"[2,3,1,4e-20] .sort()",我会得到"[1,2,3,4e-20]"作为输出.为什么".sort()"函数将"4e-20"视为大于"3"?即使您运行"3> 4e-20",您也会得到"true"作为输出,表明JavaScript确实意识到"4e-20"是一个非常小的数字.但是sort函数将它视为一个非常大的数字.为什么是这样?是否有某些方法可以改变它,或者我只需要编写自己的函数?
例如,getIndexToIns([1,2,3,4], 1.5)应该返回,1因为它大于1(index 0),但小于2(index 1)。
同样,getIndexToIns([20,3,5], 19)应该返回2因为一旦阵列已排序它看起来像[3,5,20]和19小于20(指数2)和大于5(指数1)。
这是我的代码
function getIndexToIns(arr, num) {
// Find my place in this sorted array.
arr = arr.sort();
num = Math.floor(num);
for(let i=0;i<arr.length;i++){
}
return num;
}
getIndexToIns([690, 60], 59);
Run Code Online (Sandbox Code Playgroud)