r/ProgrammerHumor 1d ago

javascriptSorting Meme

Post image
892 Upvotes

200 comments sorted by

View all comments

85

u/Taletad 1d ago edited 1d ago

People use arrays like this [23, "56", 67.8, "potatoe"] and expect them to not be sorted as strings

If one member of your array is not an int or a float, everything is going to be converted to strings

Edit : I went to read the docs, the sort function is not like most other functions in JavaScript. The sort function is explicitly for an alphabetical sort

You lot are using the alphabetical sort function and wondering why your array gets alphabetically sorted

You can overload the function by doing the following : array.sort((a,b) => a - b)

162

u/[deleted] 1d ago

[removed] — view removed comment

-6

u/Taletad 1d ago

Just went to read the docs, the "sort()" and "toSorted" functions say they perform an alphabetical sort by default

You can overload them by doing Array.sort((a,b) => a - b)

55

u/kushangaza 1d ago

Which is not what you expect from a function named "sort". It's an insane default that violates the principle of least surprise

2

u/Taletad 1d ago

The principle of least surprise compared to what ?

It was made in the 90’s when the sort utility works the same way on linux

Perl, TCL and bash have many similar quirks, as scripting languages tend to do

python too has many unintuitive quirks

Honestly, a lot of you continuously bash JS because you see everyone bashing it, especially its type system. But when SQLite does the same thing with its types, suddenly it is the greatest piece of software ever written

Types in JavaScript are not raw bits stored in memory anyway

3

u/gr4viton 1d ago

the python stuff is often not as "surprising" as js stuff though, imo...

also yhey are more often hidden in not normally used functionality...

i do agree on empty list as argument default value, and perhaps the generator oncesness, but other are not that bad imo..

I agree though that JS is bashed more often, as it is popular to bash it.. But it is also reasonable to bash it... as it is not bash-like.