Maison  >  Article  >  interface Web  >  Six façons de supprimer les doublons des tableaux JS

Six façons de supprimer les doublons des tableaux JS

小云云
小云云original
2018-03-07 13:22:571953parcourir

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!

Déclaration:
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