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

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

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

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


当前回答

为了创建这种排序,你必须传递一个函数来检查哪个先出现。

在函数中定义你想检查的值:a.id - a.id

const myJson = [ {id: 1, name: 'one'}, {id: 4, name: 'four'}, {id: 2, name: ' 2 '}, {id: 3, name: ' 3 '} ]; //提供要检查的sort方法 const myNewSort = myJson。排序(函数(a, b) { 返回a.id - b.id; }); console.log('my new sort',myNewSort)

其他回答

对整数> 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默认执行字典排序,对于数字排序,提供自己的函数。这里有一个简单的例子:

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

numArray.sort(compareNumbers);

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

虽然在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()。

基于以上所有的答案,它们也可以像这样在一行中完成:

var numArray = [140000, 104, 99];
numArray = numArray.sort(function (a, b) {  return a - b;  });

//outputs: 99, 104, 140000

试试下面的代码:

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>