数字在JavaScript中排序

时间:2014-08-07 05:40:24

标签: javascript

我想对数值数组进行排序,我找到了一个代码:

<!DOCTYPE html>
<html>
<body>

<p>Click the button to sort the array in ascending order.</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
var points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points;    

function myFunction() {
    points.sort(function(a, b){return a-b});
    document.getElementById("demo").innerHTML = points;
}
</script>

</body>
</html>

输出:

1,5,10,25,40,100

代码运行正常但我无法理解该语句如何 points.sort(function(a, b){return a-b});正在运作,什么是a和b?

3 个答案:

答案 0 :(得分:0)

这很容易理解:

if(a < b){
  return -1;
} else if( a > b){
  return 1;
} else { 
  return 0;
}

答案 1 :(得分:0)

a和b是阵列中相互比较的数字,

因此,如果a-b出现为负数,那么它表示b> a,所以如果列表是提升的话,它将提前b

根据Mozilla Docs

  

如果compareFunction(a,b)小于0,则将a排序为低于的索引   b,即a先来。

     

如果compareFunction(a,b)返回0,则保持a和b相对于彼此保持不变,但是对所有不同的元素进行排序。注意:ECMAscript标准不保证   这种行为,因此并非所有浏览器(例如至少可追溯到2003年的Mozilla版本)都尊重这一点。

     

如果compareFunction(a,b)大于0,则将b排序为低于a的索引。的compareFunction(一,   b)当给定一对特定元素a和b作为其两个参数时,必须始终返回相同的值。

     

如果返回不一致的结果,则排序顺序未定义

答案 2 :(得分:0)

Array.sort是一个函数,它将比较函数作为参数。

排序时,对比较函数的函数调用进行排序,传入要排序的数组的两个元素。

  • 如果此函数返回值小于零,则优先于第一个 元素应该留在第二个。

  • 如果它返回第一个元素的数字,大于零 应该从第二个(在排序的数组中)保持正确

  • 如果返回零,则这些元素相等而不是 他们留在哪个顺序。

因此,要更改排序顺序(如果需要),您只需将比较功能切换为

即可
return b - a;