Programming Javascript is roughly the equivalent of hitting your head with a hammer or trying to uninstall McAfee.
As if Javascript wasn’t complex enough, let’s introduce TypeScript and Coffescript and then write transpilers so we can convert said languages back into Javascript, which we could have done in the first place.
Nobody uses coffeescript anymore, and typescript is there to make things easier not harder.
deleted by creator
These languages only exist because JS is so dumb in the first place
I couldn’t believe it, tried it out, what the actual heck? I mean I get all these weird string vs number comparison but sorting actual numbers and this comes out? What kind of drugs were the designers of javascript (or at least this function) on… Who thought it was a good idea to sort numbers lexicographically??
Probably meth or cocaine, considering js was written by a single person in 10 days
deleted by creator
Iirc Array.sort requires you to pass a function in, or it casts into strings and sort them.
deleted by creator
Use stringly-typed everything, and always padStart your numbers.
Saves running into issues with numbers outside the 52-bit integer range.
And padding start means you don’t have to worry about pesky sort functions.Just don’t do maths. Simple.
Maybe you could do a manual sort.
Provide a “captcha” prompt, and ask which comes first in the list… You know, to make sure the user is a human! And you get free sorting.Use stringly-typed everything
Instructions unclear. Now 1+2=12.
I got 000001000002.
Provide a “captcha” prompt, and ask which comes first in the list… You know, to make sure the user is a human! And you get free sorting.
I mean, this strangely is a compelling idea…
I always try to prove myself human with wrong answers. Typically the first screen is an AI training screen, then the next screen is one the computer knows but wants to see if you know. By answering the first one wrong and the second correct, I’m hoping to poison the data.
Iirc they require 5 votes with the same response. Your effort won’t do anything, other than flag you as unreliable.
Afaik 4chan (of course) did that poisoning correctly, “classifying” the unknown words as “penis” (of course).
I’m happy enough being classed as unreliable, either way they don’t get good training data.
deleted by creator
Just don’t do maths. Simple.
That’s a good rule for life in general, really.
Ugh, I just ran into this in Terraform. Why is this a thing?
It’s just sorted alphabetically (technically it is the UTF16 code order). To be fair it’s a sane default for most use cases. In JS case you can define a very simple callback to change the behavior to numeric sorting (a,b => a<b). Many other sorters provide a flag instead, but numeric sorting is seldom the default as it is not as useful most of the time in weakly typed languages.
weakly typed languages
Well, looks like we found the problem right there
I don’t think JS works that way
It does.
Array.prototype.sort
if no callback is passed to it will coerce non-undefined
elements to strings when sorting. It does do that.To sort numbers passing a function like
(a, b) => a - b
is good enough.Fuck JS is stupid.
Source: use JS regularly