Cet article présente principalement l'algorithme de déduplication de tableau JavaScript, résume et analyse les opérations de lecture, d'écriture, de parcours, de comparaison, de tri et autres liées à la déduplication de tableau JavaScript ainsi que les techniques de mise en œuvre liées à l'amélioration de l'algorithme sous forme d'exemples. Les amis dans le besoin peuvent se référer à ce qui suit
L'exemple de cet article résume l'algorithme de déduplication de tableau JavaScript. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
Cas de test : arr = ["1",3,"1",1,4,5,1,"2",5, 1,{" name":"li","age":20},2,4,3,{"name":"li","age":20},""];
méthode 1 : à l'aide d'un tableau temporaire et d'indexOf, la complexité de l'algorithme est : O(n^2)
function unique1(arr){ var temp = []; for(var i=0; i<arr.length; i++){ if(temp.indexOf(arr[i]) == -1){ temp.push(arr[i]); } } return temp; }
Résultat du test : unique1(arr) : ["1" , 3, 1, 4, 5, "2", Objet { nom="li", âge=20}, 2, Objet { nom="li", âge=20}, ""]
le bug ne peut pas distinguer les objets
Méthode 2 : utiliser l'objet Object en JavaScript comme table de hachage
function unique2(arr){ var temp=[]; var hash={}; for(var i=0; i<arr.length;i++){ if(!hash[arr[i]]){ hash[arr[i]]=true; temp.push(arr[i]); } } return temp; }
Résultat du test : unique2(arr) : [" 1", 3, 4, 5, "2", Object { name="li", age=20}, ""]
bug : Impossible de distinguer : 1 et "1"
Modifier
function unique2(arr){ var temp=[]; var hash={}; for(var i=0; i<arr.length;i++){ var item = arr[i]; var key = typeof(item)+item; if(!hash[key]){ hash[key]=true; temp.push(arr[i]); } } return temp; }
Résultat du test : unique2(arr): ["1", 3, 1, 4, 5, "2", Objet { name="li", age= 20}, 2 , ""]
Méthode 3 : utilisez d'abord le tri pour trier le tableau, puis utilisez un tableau temporaire pour stocker le dernier du même élément. Cette méthode ne peut être utilisée que. pour les tableaux de type Nombre purs
function unique3(arr){ arr.sort(function(a,b){ return a-b; }); var temp = []; for(var i=0;i<arr.length;i++){ if(arr[i] !== arr[i+1]){ temp.push(arr[i]); } } return temp; }
J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir.
Articles connexes :
Exemple de code JSON de transfert Ajax
ajax utilise JSON pour réaliser la transmission de données
Code de vérification Ajax pour une implémentation en double
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!