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

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

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

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


当前回答

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

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

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

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

知道更多

其他回答

提升

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

下行

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

只是为了好玩:

降序=升序+反转

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

处理undefined, null和NaN: null的行为像0,NaN和undefined结束。

array = [3, 5, -1, 1, NaN, 6, undefined, 2, null]
array.sort((a,b) => isNaN(a) || a-b)
// [-1, null, 1, 2, 3, 5, 6, NaN, undefined]

试试下面的代码:

HTML:

<div id="demo"></div>

JavaScript代码:

<script>
    (function(){
        var points = [40, 100, 1, 5, 25, 10];
        document.getElementById("demo").innerHTML = points;
        points.sort(function(a, b){return a-b});
        document.getElementById("demo").innerHTML = points;
    })();
</script>

对整数> 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()更适合于此,检查其他答案

数组中。Sort默认使用字母排序,而不是数字排序。

要支持数字,请添加如下的like

var numArray = [140000, 104, 99];
numArray.sort((a, b) =>  a - b); // <-- Ascending
numArray.sort((a, b) =>  b - a); // <-- Descending
console.log(numArray);

输出: