Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Deduplicate array test v2
(version: 0)
Comparing performance of:
Map + filter + includes vs forEach vs for vs for with saved length
Created:
3 years ago
by:
Guest
Jump to the latest result
Tests:
Map + filter + includes
const deduplicateArrayByKey = (array, key) => { const arrayOfKeys = array.map((item) => item[key]); return array.filter( (item, index) => !arrayOfKeys.includes(item[key], index + 1) ); } let testArray = [{ id: "1" }, { id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" }]; return deduplicateArrayByKey(testArray, "id");
forEach
const deduplicateArrayByKey2 = (array, key) => { const seen = {}; const result = []; array.forEach((item) => { if (!seen[item[key]]) { result.push(item); seen[item[key]] = true; } }) return result; } let testArray = [{ id: "1" }, { id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" }]; return deduplicateArrayByKey2(testArray, "id");
for
const deduplicateArrayByKey3 = (array, key) => { const seen = {}; const result = []; for (let i = 0; i < array.length; i++) { const item = array[i]; if (!seen[item[key]]) { result.push(item); seen[item[key]] = true; } } return result; } let testArray = [{ id: "1" }, { id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" }]; return deduplicateArrayByKey3(testArray, "id");
for with saved length
const deduplicateArrayByKey4 = (array, key) => { const seen = {}; const result = []; const len = array.length; for (let i = 0; i < len; i++) { const item = array[i]; if (!seen[item[key]]) { result.push(item); seen[item[key]] = true; } } return result; } let testArray = [{ id: "1" }, { id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" },{ id: "1" }]; return deduplicateArrayByKey4(testArray, "id");
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (4)
Previous results
Fork
Test case name
Result
Map + filter + includes
forEach
for
for with saved length
Fastest:
N/A
Slowest:
N/A
Latest run results:
No previous run results
This benchmark does not have any results yet. Be the first one
to run it!
Autogenerated LLM Summary
(model
llama3.2:3b
, generated one year ago):
The benchmark data seems to be incomplete, as the first result is not for the test name "for with saved length". However, I'll provide an answer based on the available information. To deduplicate an array by a specific key, you can use the `Object.values().forEach()` method along with the `hasOwnProperty()` method and an object to keep track of unique values. Here's a sample implementation: ```javascript function deduplicateArrayByKey4(array, key) { const result = []; const seen = {}; array.forEach((obj) => { if (seen[obj[key]]) return; seen[obj[key]] = true; result.push(obj); }); return result; } ``` This function uses a `forEach` loop to iterate over the input array. For each object, it checks if the value of the specified key is already in the `seen` object. If not, it adds the object to the `result` array and marks its key as seen. Please note that this implementation has a time complexity of O(n^2) due to the use of the `hasOwnProperty()` method for each iteration. For larger datasets, a more efficient approach would be needed. If you need help optimizing or implementing the function based on your specific requirements, feel free to provide further details!
Related benchmarks:
Methods to remove duplicates from array (fork)
Methods to remove duplicates from array (test)
Deduplicate array test
Methods to remove duplicates from array x2
Comments
Confirm delete:
Do you really want to delete benchmark?