Maison > interface Web > js tutoriel > le corps du texte

Six façons de supprimer les doublons des tableaux JS

小云云
Libérer: 2018-03-07 13:22:57
original
1952 Les gens l'ont consulté

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]
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

. 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
Copier après la connexion

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]
Copier après la connexion

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]
Copier après la connexion

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!