Performance test shows this function is the fastest one: function removeDuplicates3(array) { array.splice(0, array.length, ...(new Set(array))) }
Setup js, executed for each test: function getRandomInt(max) { return Math.floor(Math.random() * Math.floor(max)); } const base = ["a", "b", "c", "d", "e", "f", "g", "h"]; const array_test_length = 5000; var arr = []; arr.length = array_test_length; for (let i = 0, len = arr.length, blen = base.length; i < len; ++i) { arr[i] = base[getRandomInt(blen)]; }
function removeDuplicates1(array) { return array.filter((a, b) => array.indexOf(a) === b) }
function removeDuplicates2(array) { let x = {}; array.forEach(function(i) { if(!x[i]) { x[i] = true } }) return Object.keys(x) }
function removeDuplicates3(array) { array.splice(0, array.length, ...(new Set(array))) }
function removeDuplicates4(array) { let a = [] array.map(x => { if(!a.includes(x)) { a.push(x) } }) return a }
function removeDuplicates5(array) { return [...new Set(array)] }
function removeDuplicates6(arr){ return arr.reduce((acc, curr) => acc.includes(curr) ? acc : [...acc, curr], []); }
function removeDuplicates7(array){ let a = [] for(let val of array) { if (!isExist(a, val)) a.push(val) } return a } function isExist (arr, val){ for (let i of arr){ if (i == val) return true } return false }
function removeDuplicates8(array){ return array.reduce((acc, item) => { if(!acc.includes(item)) { acc.push(item); } return acc; }, []); }
Each test goes like this: var new_arr = removeDuplicates1(arr); // only need to change the number
Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink.
Hide child comments as well
Confirm
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Performance test shows this function is the fastest one:
function removeDuplicates3(array) {
array.splice(0, array.length, ...(new Set(array)))
}
Setup js, executed for each test:
function getRandomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
const base = ["a", "b", "c", "d", "e", "f", "g", "h"];
const array_test_length = 5000;
var arr = [];
arr.length = array_test_length;
for (let i = 0, len = arr.length, blen = base.length; i < len; ++i) {
arr[i] = base[getRandomInt(blen)];
}
function removeDuplicates1(array) {
return array.filter((a, b) => array.indexOf(a) === b)
}
function removeDuplicates2(array) {
let x = {};
array.forEach(function(i) {
if(!x[i]) {
x[i] = true
}
})
return Object.keys(x)
}
function removeDuplicates3(array) {
array.splice(0, array.length, ...(new Set(array)))
}
function removeDuplicates4(array) {
let a = []
array.map(x => {
if(!a.includes(x)) {
a.push(x)
}
})
return a
}
function removeDuplicates5(array) {
return [...new Set(array)]
}
function removeDuplicates6(arr){
return arr.reduce((acc, curr) => acc.includes(curr) ? acc : [...acc, curr], []);
}
function removeDuplicates7(array){
let a = []
for(let val of array) {
if (!isExist(a, val))
a.push(val)
}
return a
}
function isExist (arr, val){
for (let i of arr){
if (i == val) return true
}
return false
}
function removeDuplicates8(array){
return array.reduce((acc, item) => {
if(!acc.includes(item)) {
acc.push(item);
}
return acc;
}, []);
}
Each test goes like this:
var new_arr = removeDuplicates1(arr); // only need to change the number