尝试从我知道仅包含整数的数组中获取最高和最低值似乎比我想象的要难。
var numArray = [140000, 104, 99]; numArray = numArray.sort(); alert(numArray)
我希望这能显示出来99, 104, 140000。相反,它显示104, 140000, 99。因此,似乎排序是将值作为字符串处理。
99, 104, 140000
104, 140000, 99
有没有一种方法可以使sort函数对整数值进行实际排序?
默认情况下,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)。
Array.prototype.sort()
Inf - Inf
还有按键对对象进行排序的示例。