【问题标题】:Sort strings by using "less/greater than" comparison operators in comparator在比较器中使用“小于/大于”比较运算符对字符串进行排序
【发布时间】:2016-03-31 16:27:25
【问题描述】:

今天我发现一个对我来说很奇怪的字符串排序实现:

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

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

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

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

【问题讨论】:

  • 想想0。这有关系吗?这只是一些优化。

标签: javascript string sorting


【解决方案1】:

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

EDIT实际上没有。

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

【讨论】:

  • 我想知道字符串比较是否可以给我们相同的结果(我的意思是通过比较排序仅适用于某些测试)。
  • @user3429127 虽然我的测试使用数字而不是字符串,但基本原理是相同的 - 您必须使用适当的比较器。
【解决方案2】:

比较字符串时,比较是逐个字母进行的。所以c 的符号值低于d (Check this table)

【讨论】:

  • 我认为你没有理解这个问题。
猜你喜欢
  • 2012-11-29
  • 1970-01-01
  • 2011-01-24
  • 1970-01-01
  • 2014-05-07
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
相关资源
最近更新 更多