1
1
Fork 0
portfolio/blog/using-js-sets-to-find-elements.md
2025-04-18 22:38:02 -06:00

1.1 KiB

title date tags description
Using JS Set's to Find Elements 2019-07-09T20:27:09.247Z
Tech
JS's `new Set()` can be the new Hash table optimization for reducing nested loops. So I've put together a little code snippet to show this in practice.

Functionally for one check, this is identical to checking the .indexOf() or .includes() of an Array. However, in cases where you're filtering a large array down to match a list of ID's, for example, the nested looping can result in a performance hit.

Traditionally hash tables were used for speeding up this search, but with ES2015 we can now leverage Sets which are easier to read and still result in a single loop that's equal to the length of the Array and no more.

(Can be further optimized by ending when running out of needles)

// Example Data
let hugeArray = [...Array(10000).keys()].map(id => { return {id}; }); // [{id: 0}, ..., {id: 9999}]
let needles = [1010, 2020, 3030, 4040, 5050, 6060, 7070, 8080, 9090];

// Finding matching elements
let needlesSet = new Set(needles);
let matches = hugeArray.filter(obj => needlesSet.has(obj.id));

https://gitlab.com/snippets/1873655