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

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

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

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


当前回答

下面的'numerically'函数作为回调函数提供时,在许多情况下用于对数字数组进行数字排序:

function numerically(a, b){
    return a-b;
}

array.sort(numerically); 

但在一些罕见的情况下,数组包含非常大的负数,当a-b小于JavaScript可以处理的最小数字时,可能会发生溢出错误。

所以用数字表示函数的更好方法如下:

function numerically(a, b){
   if(a < b){
      return -1;
   } else if(a > b){
      return 1;
   } else {
      return 0;
   }
}

其他回答

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

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

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

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

知道更多

默认情况下,sort方法按字母顺序对元素排序。要进行数字排序,只需添加一个处理数字排序的新方法(sortNumber,如下所示)

var numArray = [140000, 104, 99]; numArray.sort(function(a, b) { 返回 A - B; }); console.log(numArray);

文档:

Mozilla Array.prototype.sort()建议对不包含Infinity或NaN的数组使用这个比较函数。(因为∞-∞是NaN,不是0)。

还有按键排序对象的例子。

数组中。Sort默认执行字典排序,对于数字排序,提供自己的函数。这里有一个简单的例子:

function compareNumbers(a, b)
{
    return a - b;
}

numArray.sort(compareNumbers);

还要注意,排序是“就地”工作的,不需要赋值。

As sort方法将数组元素转换为字符串。因此,下面的方法也适用于十进制数的数组元素。

let productPrices = [10.33, 2.55, 1.06, 5.77];
console.log(productPrices.sort((a,b)=>a-b));

并给出预期结果。

对整数> 0排序,跳出框框思考:

函数sortArray(arr) { return new Promise((resolve) => { Const result = [] arr.forEach((item) => { setTimeout(() => { result.push(项) 如果结果。长度== arrr . Length) resolve(result) },项) }) }) } sortArray([4,2, 42岁,128年,56岁的2]),然后((结果)= > { document . write (JSON.stringify(结果)) })

请注意,这不应该有效地使用,.sort()更适合于此,检查其他答案