4 ms·
> [-2, 1,5,-7].sort((a,b)=> a-b) works fine
by syspec 6y ago
> [-2, 1,5,-7].sort((a,b)=> a-b) works fine
- manquer 6y agoIt is not obvious that you need to include comparative function for a straightforward numerical sort ? How many developers are going to miss that ?
- amiantos 6y agoProbably every developer, but only the first time... if they catch it anyway.
- Supermancho 6y ago> It is not obvious that you need to include comparative function for a straightforward numerical sort ? No. It's not obvious. Python - a = [6, -2, 2, -7] a.sort() print(a) PHP - $arr = [6, -2, 2, -7]; sort($arr); print_r($arr); Rust - let mut vec = vec![6, -2, 2, -7]; vec.sort(); assert_eq!(vec, vec![-7, -2, 2, 6]); The expected behavior is a default natural number sort. What other default was chosen? String comparison for some value of Strings, coerced from the integers in some way. If you have to research a bunch of implicit behavior to understand how sort works for numbers. I believe that's unintuitive by definition (simplest case is more complex than necessary). Fixable with a required flag or specialized functions (eg PHP).
- deleted 6y ago[deleted]
- SamReidHughes 6y agoIt was more intuitive back in the day when everybody knew Perl.
- sukilot 6y ago> "numerical" JavaScript is weakly typed, so it's never appropriate to assume such a thing without applying a type conversion. Sad, but true. > "Straightforward" Again, this is JavaScript.