Test name | Executions per second |
---|---|
Lodash uniqBy | 2392.5 Ops/sec |
new Set() Destructuring | 1975.3 Ops/sec |
uniq for loop | 1114.1 Ops/sec |
uniq by forEach | 981.0 Ops/sec |
uniq by filter | 570.6 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);