Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Lodash uniqBy vs Set with Array of object
Lodash uniqBy vs [...new Set()]
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36
Browser:
Chrome 145
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
2 months ago
Test name
Executions per second
Lodash uniqBy
4644.5 Ops/sec
new Set() Destructuring
2045.3 Ops/sec
uniq for loop
13933.6 Ops/sec
uniq by forEach
934.5 Ops/sec
uniq by filter
515.4 Ops/sec
HTML Preparation code:
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
Script Preparation code:
var myArr = Array.from({ length: 16000 }, () => ({ value: Math.floor(Math.random() * 1000) })); var myCopy = null;
Tests:
Lodash uniqBy
myCopy = _.uniqBy(myArr, 'value').map(({ value }) => value);
new Set() Destructuring
myCopy = [...new Set(myArr.map(({ value }) => value))]
uniq for loop
var seen = {}; var out = []; const len = myArr.length; var j = 0; for (var i = 0; i < len; i += 1) { var item = myArr[i].value; if (seen[item] !== 1) { seen[item] = 1; out[j++] = item; } } myCopy = out;
uniq by forEach
var result = []; myArr.forEach((item) => { if (result.indexOf(item.value) < 0) { result.push(item.value); } }); myCopy = result;
uniq by filter
var mapMyArr = myArr.map(({ value }) => value); myCopy = mapMyArr.filter((value, index, array) => array.indexOf(value) === index);