使用“”对字符串进行排序;小于/大于“;比较器中的比较运算符

Sort strings by using "less/greater than" comparison operators in comparator

本文关键字:比较器 大于 运算符 比较 小于 字符串 使用 排序      更新时间:2023-09-26

今天我发现了一个奇怪的字符串排序实现:

['Data', 'Chata', 'Clata'].sort(function(a, b) { return a > b});

使用这种方法,我们将一个有效的排序数组作为输出["Chata", "Clata", "Data"]。但我不清楚为什么它有效。。。

我知道比较器函数需要三种不同的输出——零、零上整数和零下整数。但在这种情况下,我们只能取两个值-true(如果a大于b)或false

有人能解释一下为什么它有效吗?

我不完全确定它是如何工作的。

编辑实际上并没有。

我用1000个数字做了一个测试(https://jsfiddle.net/alnitak/80cje6gt/)并且单个比较器不能产生正确的排序顺序:

var m = 0;
a.sort(function(a, b) { ++m; return a > b} );
var n = 0;
b.sort(function(a, b) { ++n; return a < b ? -1 : a > b ? 1 : 0});

比较字符串时,会逐个进行比较。因此c的符号值低于d(检查此表)