我正在学习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>
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});
比较函数的目的是定义替代排序顺序。
比较函数应返回负值、零或正值,具体取决于参数。
当 sort() 函数比较两个值时,它将值发送到比较函数,并根据返回的(负、零、正)值对值进行排序。
如果结果为负数,则a排在b之前。
如果结果为正,则 b 排在 a 之前。
如果结果为 0,则两个值的排序顺序不做任何更改。