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

时间:2015-12-25 20:23:12

标签: javascript string sorting

今天我发现字符串排序的实现很奇怪:

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

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

我知道比较器函数需要三个不同的输出 - 零,零以上的整数,零以下的整数。但在这种情况下,我们只能取两个值 - true (如果大于b)或 false (如果小于b)(类型强制后为1或0)

任何人都可以解释一下它的工作原理吗?

2 个答案:

答案 0 :(得分:4)

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

编辑它实际上没有。

我使用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});

答案 1 :(得分:0)

比较字符串时,比较是逐字逐句完成的。因此c的符号值低于dCheck this table