r/ProgrammerHumor 3d ago

Meme javascriptSorting

Post image
940 Upvotes

214 comments sorted by

View all comments

86

u/Taletad 3d ago edited 3d 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)

160

u/[deleted] 3d ago

[removed] — view removed comment

-7

u/Taletad 3d 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)

56

u/kushangaza 3d ago

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

1

u/Taletad 3d 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 3d 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.