使用“”对字符串进行排序;小于/大于“;比较器中的比较运算符
Sort strings by using "less/greater than" comparison operators in comparator
今天我发现了一个奇怪的字符串排序实现:
['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
(检查此表)
相关文章:
- Backbone.js比较器函数是'工作不正常
- 在获取后将新模型准备到集合中(不带比较器)
- 主干中的比较器在添加新模型时需要排序调用
- Linqjs 与比较器问题相交
- 记住比较器函数的参数顺序的技巧是什么
- 覆盖主干网.js比较器
- Backbone.js-排序和迭代-比较器不工作
- LINQ.JS,Except的比较器选择器
- 使用“”对字符串进行排序;小于/大于“;比较器中的比较运算符
- 主干:使用比较器反向采集顺序
- I'm在if语句中使用小于比较器;然而,即使它不应该;t、 它的评估结果为false
- 比较运算符-大于或等于-不工作
- 如何使用“>"AngularJS ng-if语句中的比较器
- 将两个模型与一个模型传递到主干比较器,并进行字母数字排序
- Backbone Collection:自定义比较器
- 如何为javascript排序函数制作一个高效的比较器来对字符串数组进行排序
- 如何使用比较器按多个属性排序
- 使用比较器排序是否比使用key- function排序更好?
- 自定义javascript字符串排序比较器
- 用于骨干比较器的最小javascript字符串值