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

依然范特西╮ 提交于 2020-01-10 05:06:06

问题


Today I found a strange for me implementation of strings sorting:

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

Using this approach we take a valid sorted array as the output - ["Chata", "Clata", "Data"]. But I don't clearly understand why it works...

I know that comparator function expects three different outputs - zero, integer above zero, integer below zero. But in this case we can take only two values - true (if a greater than b) or false (if a less than b) (1 or 0 after type coercion).

Can anybody explain me why it works?


回答1:


I'm not entirely sure how it manages to work.

EDIT it actually doesn't.

I produced a test using 1000 numbers (https://jsfiddle.net/alnitak/80cje6gt/) and the single comparator doesn't produce the correct sort order:

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});



回答2:


When comparing strings, comparison is done letter by letter. So c has lower symbol value than d (Check this table)



来源:https://stackoverflow.com/questions/34466125/sort-strings-by-using-less-greater-than-comparison-operators-in-comparator

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!