Я много читал об этой теме, и я видел много разных алгоритмов. Я наткнулся на другое решение, которое Im с трудом понимает его эффективность по сравнению с другими алгоритмами, поскольку использует простой временный объект для хранения существующих элементов массива. Является ли это верным решением по сравнению с методом «старой школы» с использованием сложного метода сортировки и сравнения?JavaScript - удалять эффективность алгоритмов дубликатов
function removeDup(arr){
var element,
existObj= {},
finalArr = [];
for(var i=0;i<arr.length;i++){
element = arr[i];
if(!existObj[element]){
finalArr.push(element);
existObj[element] = true;
}
}
return finalArr;
}
//console.log(removeDup([2,2,2,2,4534,5,7,3]));
console.log(removeDup(["mike","john","alex","mike","john"]));
Друг сказал мне, что эффективность здесь не может быть четко определена, потому что я действительно не знаю, как был реализован объект темп.
Подумайте о существовании 'existObj' в качестве хэш-карты - с приближением' O (1) 'для назначения и доступа. – Bergi
Это проще, используя ** [Array.filter] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) ** – Prateek
@Bergi: вы правы , а так как O (1) + константа === 0 (1), мы не имеем «близкого» O (1) для поиска, а точно O (1). Таким образом, этот алгоритм O (n). Теперь, как показано в моем ответе, мы можем получить улучшение 6-10X по «k» этого O (n), используя собственный объект с наилучшим положением. – GameAlchemist