Update Posts “using-js-sets-to-find-elements”
This commit is contained in:
parent
c482734d59
commit
e40175d8d1
1 changed files with 19 additions and 1 deletions
|
@ -8,7 +8,23 @@ description: >-
|
||||||
loops.
|
loops.
|
||||||
|
|
||||||
|
|
||||||
https://gitlab.com/snippets/1873655
|
```js
|
||||||
|
|
||||||
|
// 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));
|
||||||
|
|
||||||
|
```
|
||||||
---
|
---
|
||||||
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)
|
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)
|
||||||
|
|
||||||
|
@ -21,3 +37,5 @@ let needles = [1010, 2020, 3030, 4040, 5050, 6060, 7070, 8080, 9090];
|
||||||
let needlesSet = new Set(needles);
|
let needlesSet = new Set(needles);
|
||||||
let matches = hugeArray.filter(obj => needlesSet.has(obj.id));
|
let matches = hugeArray.filter(obj => needlesSet.has(obj.id));
|
||||||
```
|
```
|
||||||
|
|
||||||
|
https://gitlab.com/snippets/1873655
|
||||||
|
|
Loading…
Add table
Reference in a new issue