Test name | Executions per second |
---|---|
Lodash uniqBy | 5564.6 Ops/sec |
new Set() Destructuring | 3309.5 Ops/sec |
uniq for loop | 19750.3 Ops/sec |
uniq by forEach | 1018.5 Ops/sec |
uniq by filter | 607.0 Ops/sec |
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
var myArr = Array.from({
length: 16000
}, () => ({ value: Math.floor(Math.random() * 1000) }));
var myCopy = null;
myCopy = _.uniqBy(myArr, 'value').map(({ value }) => value);
myCopy = [new Set(myArr.map(({ value }) => value))]
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;
var result = [];
myArr.forEach((item) => {
if (result.indexOf(item.value) < 0) {
result.push(item.value);
}
});
myCopy = result;
var mapMyArr = myArr.map(({ value }) => value);
myCopy = mapMyArr.filter((value, index, array) => array.indexOf(value) === index);