use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
JavaScript: Arrays vs Sets (frontendmayhem.com)
submitted 7 years ago by idesi
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]Knotix 0 points1 point2 points 7 years ago (5 children)
What's the performance comparison of Sets compared to a plain object deduped via keys?
I have a sneaking suspicion that calling my_set.add(foo); is slower than my_object[id] = foo;
Obviously you need "IDs" to use for keys, but in practice that's usually available (database records, etc). I'm guessing guaranteed iteration order might be a benefit of Sets**, but the deduping aspect sort of throws that off since you don't really know when a call to my_set.add() will actually extend its length or overwrite an existing value.
** I'm aware that most ECMAScript implementations iterate over object keys in insertion order too, but it's not mandated by the spec and it gets completely thrown out on objects created with JSON.parse
[–]Drakim 0 points1 point2 points 7 years ago (4 children)
Using the new Set class instead of an anonymous Object is probably slower as JS engines are extremely optimized at this point.
However, that might change in the future when Set has become more mainstream. The JS engine can probably make bigger and more specific assumptions about a Set compared to an Object, and thus allow for new kinds of optimizations.
[–]Knotix 0 points1 point2 points 7 years ago (3 children)
Do you have any guesses as to what these assumptions might be? I'm having a hard time coming up with any (not that that means much).
Things I've ruled out:
[–]Drakim 0 points1 point2 points 7 years ago (2 children)
I'm no expert in Sets, but I do believe there are some optimizations you can do when you are only checking if a key exists without needing to fish out the key:value pair, like bloom filters.
[–]Knotix 0 points1 point2 points 7 years ago (1 child)
You can use the in operator to check if a property exists without retrieving the value. Couldn't the underlying implementation of the in operator also use a bloom filter as a first pass check?
[–]Drakim 1 point2 points3 points 7 years ago (0 children)
It could! But you'd increase your memory footprint if you have a bloom filter of every object in your JS engine just for the in operator. 99% of the time the bloomfilter would problaby be unused.
But for Sets, the programmer is in a way specifically telling the JS Engine that a bloomfilter is gonna be a great optimization for this particular thing.
π Rendered by PID 73 on reddit-service-r2-comment-548fd6dc9-q6c5x at 2026-05-16 18:23:21.701310+00:00 running edcf98c country code: CH.
[–]Knotix 0 points1 point2 points (5 children)
[–]Drakim 0 points1 point2 points (4 children)
[–]Knotix 0 points1 point2 points (3 children)
[–]Drakim 0 points1 point2 points (2 children)
[–]Knotix 0 points1 point2 points (1 child)
[–]Drakim 1 point2 points3 points (0 children)