试图从一个只包含整数的数组中获得最大值和最小值似乎比我想象的要难。
var numArray = [140000, 104, 99]; numArray = numArray.sort(); console.log(numArray)
我希望这是99 104 140000。相反,它显示的是104、14万、99。看起来排序是把值当做字符串处理的。
有没有办法让排序函数对整数值进行排序?
试图从一个只包含整数的数组中获得最大值和最小值似乎比我想象的要难。
var numArray = [140000, 104, 99]; numArray = numArray.sort(); console.log(numArray)
我希望这是99 104 140000。相反,它显示的是104、14万、99。看起来排序是把值当做字符串处理的。
有没有办法让排序函数对整数值进行排序?
当前回答
我同意aks,但是不用
return a - b;
你应该使用
return a > b ? 1 : a < b ? -1 : 0;
其他回答
只需执行.sort((a, b) => a - b),而不是.sort()本身
var numArray = [140000, 104,99]; numArray。排序((a, b) => a - b); console.log (numArray)
提升
arr.sort((a, b) => a - b);
下行
arr.sort((a, b) => b - a);
只是为了好玩:
降序=升序+反转
arr.sort((a, b) => a - b).reverse();
我很惊讶为什么每个人都建议将比较器函数传递给sort(),这使得排序非常慢!
要对数字排序,只需创建任何TypedArray:
var numArray = new Float64Array([140000, 104, 99]); numArray = numArray.sort(); console.log(numArray)
基于以上所有的答案,它们也可以像这样在一行中完成:
var numArray = [140000, 104, 99];
numArray = numArray.sort(function (a, b) { return a - b; });
//outputs: 99, 104, 140000
您可以简单地使用max()和min()内置函数来获得高度和最小值
var numArray = [140000, 104, 99];
console.log(Math.max(...numArray));
console.log(Math.min(...numArray));
如果你想按升序或降序排序
numArray.sort((a, b)=> a - b);
知道更多