JS如何对数字进行排序?

问题描述 投票:0回答:2

我正在学习Javascript,我遇到了对数字进行排序的问题,我不明白排序功能是如何工作的,我找到了另一种对数字进行排序的方法,但它是使用列表而不是数组,我需要解释。 我还看到这个链接:在没有 sort() 方法的情况下用数字对数组进行排序

const points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo1").innerHTML = points;

points.sort(function(a, b) {
  return a - b
});
document.getElementById("demo2").innerHTML = points;

document.getElementById("demo3").innerHTML = points.sort();
unsorted:
<div id="demo1"></div>
sorted:
<div id="demo2"></div>
sorted alphabetically:
<div id="demo3"></div>

javascript arrays sorting
2个回答
0
投票

const points = [40, 100, 1, 5, 25, 10];

console.log(points)

console.log(points.sort())

console.log(points.sort(function(a, b){return (a - b);}))

默认情况下,sort() 函数将值作为字符串进行排序。

但是,如果数字按字符串排序,“25”会比“100”大,因为“2”比“1”大。

因此,sort()方法在对数字进行排序时会产生不正确的结果。

您可以通过提供比较函数来解决此问题:

常量点 = [40, 100, 1, 5, 25, 10]; point.sort(function(a, b){返回 a - b});

Solution


0
投票

比较函数的目的是定义替代排序顺序。

比较函数应返回负值、零或正值,具体取决于参数。

当 sort() 函数比较两个值时,它将值发送到比较函数,并根据返回的(负、零、正)值对值进行排序。

如果结果为负数,则a排在b之前。

如果结果为正,则 b 排在 a 之前。

如果结果为 0,则两个值的排序顺序不做任何更改。

© www.soinside.com 2019 - 2024. All rights reserved.