Méthode 1 :
Boucle double couche, éléments de boucle externe, comparer les valeurs lors de la boucle interne
S'il y a les mêmes valeurs, ignorez-les, sinon, poussez-les dans the array
Cet article partage principalement avec vous six méthodes de déduplication des tableaux JS. J'espère qu'il pourra vous aider.
Array.prototype.distinct =function(){ vararr = this, result = [], i, j, len = arr.length; for(i = 0; i < len; i++){ for(j = i + 1; j < len; j++){ if(arr[i] === arr[j]){ j = ++i; } } result.push(arr[i]); } returnresult; } var arra = [1,2,3,4,4,1,1,2,1,1,1]; arra.distinct(); //返回[3,4,2,1]
Méthode 2 : Utiliser l'épissure pour opérer directement sur le tableau d'origine
Boucle double couche, éléments de boucle externe, comparer les valeurs lors de la boucle interne
Quand les valeurs sont les mêmes, Puis supprimez cette valeur
Remarque : Après avoir supprimé l'élément, vous devez réduire la longueur du tableau de 1.
Array.prototype.distinct = function (){ var arr = this, i, j, len = arr.length; for(i = 0; i < len; i++){ for(j = i + 1; j < len; j++){ if(arr[i] == arr[j]){ arr.splice(j,1); len--; j--; } } } return arr; }; var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,]; var b = a.distinct(); console.log(b.toString()); //1,2,3,4,5,6,56
Avantages : Simple et facile à comprendre
Inconvénients : occupé Mémoire élevée, vitesse lente
Méthode 3 : Utiliser les caractéristiques selon lesquelles les propriétés des objets ne peuvent pas être les mêmes pour dédupliquer
Array.prototype.distinct = function (){ var arr = this, i, obj = {}, result = [], len = arr.length; for(i = 0; i< arr.length; i++){ if(!obj[arr[i]]){ //如果能查找到,证明数组元素重复了 obj[arr[i]] = 1; result.push(arr[i]); } } return result; }; var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,]; var b = a.distinct(); console.log(b.toString()); //1,2,3,4,5,6,56
Méthode 4 : Déduplication récursive de tableau
Utiliser la récursion L'idée est de trier
d'abord, puis de comparer à partir de la fin. S'ils sont identiques, supprimez
Array.prototype.distinct = function (){ var arr = this, len = arr.length; arr.sort(function(a,b){ //对数组进行排序才能方便比较 return a - b; }) function loop(index){ if(index >= 1){ if(arr[index] === arr[index-1]){ arr.splice(index,1); } loop(index - 1); //递归loop函数进行去重 } } loop(len-1); return arr; }; var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,56,45,56]; var b = a.distinct(); console.log(b.toString()); //1,2,3,4,5,6,45,56
. Méthode 5 : utilisez indexOf et forEach
Array.prototype.distinct = function (){ var arr = this, result = [], len = arr.length; arr.forEach(function(v, i ,arr){ //这里利用map,filter方法也可以实现 var bool = arr.indexOf(v,i+1); //从传入参数的下一个索引值开始寻找是否存在重复 if(bool === -1){ result.push(v); } }) return result; }; var a = [1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,2,3,3,2,2,1,23,1,23,2,3,2,3,2,3]; var b = a.distinct(); console.log(b.toString()); //1,23,2,3
Méthode 6 : utilisez la structure de données set
Set d'ES6, qui est similaire à un tableau et les valeurs de ses membres sont uniques.
Utilisez Array.from pour convertir la structure Set en tableau
function dedupe(array){ return Array.from(new Set(array)); } dedupe([1,1,2,3]) //[1,2,3]
L'opérateur d'expansion (...) utilise en interne une boucle for...of
let arr = [1,2,3,3]; let resultarr = [...new Set(arr)]; console.log(resultarr); //[1,2,3]
Ce qui suit est une introduction supplémentaire à la méthode de fusion de tableaux et de suppression des doublons
1. Méthode concat()
Idée : La méthode concat() fusionne le tableau entrant ou non valeur du tableau avec le tableau d'origine. Formez un nouveau tableau et renvoyez-le. Cette méthode générera un nouveau tableau.
function concatArr(arr1, arr2){ var arr = arr1.concat(arr2); arr = unique1(arr);//再引用上面的任意一个去重方法 return arr; }
2. Array.prototype.push.apply()
Idée : L'avantage de cette méthode est qu'elle ne génère pas de nouveau tableau.
var a = [1, 2, 3]; var b = [4, 5, 6]; Array.prototype.push.apply(a, b);//a=[1,2,3,4,5,6] //等效于:a.push.apply(a, b); //也等效于[].push.apply(a, b); function concatArray(arr1,arr2){ Array.prototype.push.apply(arr1, arr2); arr1 = unique1(arr1); return arr1; }
Recommandations associées :
Explication détaillée de la déduplication et de l'aplatissement des tableaux js
Analyse de la déduplication des tableaux en JavaScript et Python
Partage de plusieurs façons de supprimer les doublons des tableaux JavaScript
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!