对于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:
如果
a
和b
是要比较的两个元素,则:
- 如果
compareFunction(a, b)
小于 0,则a
排序为低于b
的索引(即a
是第一位的(。- 如果
compareFunction(a, b)
返回 0,则保持a
和b
彼此不变,但相对于所有不同的元素进行排序。- 如果
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 条规则,保持a
和b
不变。 - 如果
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});