Test name | Executions per second |
---|---|
lodash | 10302855.0 Ops/sec |
javascript | 6813315.5 Ops/sec |
native | 8606958.0 Ops/sec |
<script>https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.core.js</script>
var data = [{a: 1}, {a: 2}, {a: 3}, {a: 4}, {a: 5}, {a: 6}, {a: 7}, {a: 8}, {a: 1}];
_.uniqBy(data, 'a');
const sortBy = (key) => {
return (a, b) => (a[key] > b[key]) ? 1 : (b[key] > a[key] ? -1 : 0);
};
const uniqBy = (arr, a) => {
arr.sort(sortBy(a));
const arr1 = [];
arr1.push(arr[0]);
for (let index = 1; index < arr.length; index++) {
if (arr[index-1] && arr[index -1].a !== arr[index].a) {
arr1.push(arr[index]);
}
}
return arr1;
}
uniqBy(data, 'a')
function uniqueBy(arr, prop){
const record = []
const seen = {}
for (let i = 0, len = arr.length; i < len; ++i) { // Notice the len = arr.length
const item = arr[i]
const val = item[prop]
if (!seen[val]) {
seen[val] = 1
record.push(item)
}
}
}
uniqueBy(data, 'a')