试图从一个只包含整数的数组中获得最大值和最小值似乎比我想象的要难。

var numArray = [140000, 104, 99]; numArray = numArray.sort(); console.log(numArray)

我希望这是99 104 140000。相反,它显示的是104、14万、99。看起来排序是把值当做字符串处理的。

有没有办法让排序函数对整数值进行排序?


当前回答

虽然在JavaScript中不是必需的,但如果希望sort() compareFunction严格返回-1、0或1(类似于PHP中的宇宙飞船操作符的工作方式),则可以使用Math.sign()。

下面的compareFunction严格返回-1、0或1:

numArray.sort((a, b) => Math.sign(a - b));

注意:Internet Explorer不支持Math.sign()。

其他回答

这个答案与一些现有的答案是等价的,但是ECMAScript 6箭头函数提供了一个更紧凑的语法,允许我们在不牺牲可读性的情况下定义一个内联排序函数:

numArray = numArray.sort((a, b) => a - b);

现在大多数浏览器都支持它。

我同意aks,但是不用

return a - b;

你应该使用

return a > b ? 1 : a < b ? -1 : 0;

提升

arr.sort((a, b) => a - b);

下行

arr.sort((a, b) => b - a);

只是为了好玩:

降序=升序+反转

arr.sort((a, b) => a - b).reverse();

你可以简单地排序数字数组

常量数字=[13,17,14,19,16]; 让温度; for(let i=0;i<num.length;i++){ for(let j=i+1;j<num.length;j++){ if(num[i]>num[j]){ 温度=数字[i] 数字[i]=数字[j] 数字[j]=温度 } } } 控制台.log(数字);

您可以简单地使用max()和min()内置函数来获得高度和最小值

var numArray = [140000, 104, 99];
console.log(Math.max(...numArray));
console.log(Math.min(...numArray));

如果你想按升序或降序排序

numArray.sort((a, b)=> a - b);

知道更多