Skip to content

Instantly share code, notes, and snippets.

@A
Created January 3, 2019 08:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save A/3c2295a827c9575805e5fe1d02aa63f7 to your computer and use it in GitHub Desktop.
Save A/3c2295a827c9575805e5fe1d02aa63f7 to your computer and use it in GitHub Desktop.
const nonUniqueArr = [1,2,3,4,5,4,3,5,6];
const indexOfUnique = (arr) => arr
.filter((item, index, a) => a.indexOf(item) === index);
const newSetUnique = (arr) => [...new Set(arr)];
const fromUnique = (arr) => Array.from(new Set(arr));
const seenUnique = (arr) => {
const seen = new Set();
arr.filter(i => {
if (seen.has(i)) return false;
seen.add(i);
return true;
});
return seen;
}
console.time('indexOf');
let i = 0
let res;
while(i++ < 1e6) res = indexOfUnique(nonUniqueArr);
console.log(res);
console.timeEnd('indexOf');
console.time('new set');
i = 0
while(i++ < 1e6) res = newSetUnique(nonUniqueArr)
console.log(res);
console.timeEnd('new set');
console.time('from');
i = 0
while(i++ < 1e6) res = fromUnique(nonUniqueArr)
console.log(res);
console.timeEnd('from');
console.time('seen');
i = 0
while(i++ < 1e6) res = seenUnique(nonUniqueArr);
console.log(res);
console.timeEnd('seen');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment