一尘不染

如何正确排序整数数组

javascript

尝试从我知道仅包含整数的数组中获取最高和最低值似乎比我想象的要难。

var numArray = [140000, 104, 99];

numArray = numArray.sort();

alert(numArray)

我希望这能显示出来99, 104, 140000。相反,它显示104, 140000, 99。因此,似乎排序是将值作为字符串处理。

有没有一种方法可以使sort函数对整数值进行实际排序?


阅读 426

收藏
2020-04-22

共1个答案

一尘不染

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

function sortNumber(a, b) {

  return a - b;

}



var numArray = [140000, 104, 99];

numArray.sort(sortNumber);



console.log(numArray);

在ES6中,可以使用箭头功能简化此操作:

numArray.sort((a, b) => a - b); // For ascending sort
numArray.sort((a, b) => b - a); // For descending sort

说明文件:

Array.prototype.sort()对于不包含Infinity或NaN的阵列,Mozilla
建议使用此比较功能。(因为Inf - Inf是NaN,而不是0)。

还有按键对对象进行排序的示例。

2020-04-22