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?
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});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With