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 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0
Browser:
Firefox 130
Operating system:
Windows
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
Lodash uniqBy
3311.2 Ops/sec
new Set() Destructuring
2673.1 Ops/sec
uniq for loop
9241.7 Ops/sec
uniq by forEach
199.7 Ops/sec
uniq by filter
109.2 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);