Javascript "Sort()" 函数,用于对 Mozilla 文档中定义的数字进行排序



对于javascript中的数字进行排序,我们欺骗了Javascript中给出的函数sort((,它工作得很好。技巧如下:

[12, 2, 23, 3, 43, 54].sort(function (a, b) { return a - b ; } )来源 #1 和来源 #2

我不明白这个a - b到底是做什么的。我已经检查了源代码,但很难理解。我检查了堆栈溢出的以下答案,但我的疑问尚未清除。 JavaScript "sort((" 函数的算法

谁能解释一下a - b到底发生了什么?

从 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort:

如果ab是要比较的两个元素,则:

  1. 如果compareFunction(a, b)小于 0,则a排序为低于b的索引(即a是第一位的(。
  2. 如果compareFunction(a, b)返回 0,则保持ab彼此不变,但相对于所有不同的元素进行排序。
  3. 如果compareFunction(a, b)大于 0,则b排序为小于a的索引(即b是第一位的(。

当有一个数字数组时,(a, b) => a - b(一个简单的减法(将因此表现如下:

  • 如果a大于b,则将返回一个正数(例如 5 - 3 = 2(:根据上面的第 3 条规则,b排在第一位
  • 如果a等于b,则将返回 0(例如 5 - 5 = 0(:根据上面的第 2 条规则,保持ab不变
  • 如果a小于b,则将返回一个负数(例如 3 - 5 = -2(:根据上面的第一条规则,a排在第一位

如果你有一个这样的数组

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

并且您想按升序对数组进行排序,请使用以下命令:

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

对于降序:

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

最新更新