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

Partage de plusieurs méthodes pour supprimer les doublons des tableaux JavaScript

小云云
Libérer: 2018-02-08 11:40:59
original
1580 Les gens l'ont consulté

Déduplication de tableau, l'exigence générale est de vous donner un tableau, d'appeler la méthode de déduplication et de renvoyer une copie de la valeur. Il n'y aura aucun élément en double dans la copie. De manière générale, deux éléments qui renvoient vrai via la comparaison === sont considérés comme le même élément et doivent être dédupliqués. Par conséquent, 1 et "1" sont des éléments différents, et 1 et new Number(1) sont des éléments différents, {. } et {} sont des éléments différents (références différentes). (Bien sûr, si l'exigence est que {} et {} comptent comme les mêmes éléments, alors la solution sera différente). Cet article partage principalement avec vous plusieurs méthodes de déduplication des tableaux JavaScript.

méthode 1

Utiliser des doubles boucles

function unique(arr) {
 var res = [];
 for(var i = 0, len = arr.length;i < len; i++) {
  var item = arr[i];
  for(var j = 0, jLen = res.length; j<jLen; j++) {
   if(item == res[j]) break;
  }
  if(j == jLen) res.push(item);
 }
 return res;
}
Copier après la connexion

méthode 2

function unique(arr) {
 var ret = []
 for (var i = 0; i < arr.length; i++) {
 var item = arr[i]
 if (ret.indexOf(item) === -1) {
  ret.push(item)
 }
 }
 return ret
}
Copier après la connexion

Vous pouvez utiliser un sucre de syntaxe

function unique(arr) {
 var res = [];
 for(var i = 0, len = arr.length;i < len; i++) {
  var item = arr[i];
  (res.indexOf(item) === -1) && res.push(item);
 }
 return res;
}
Copier après la connexion

Mais il n'y a pas d'indexOf dans les navigateurs de versions inférieures

var indexOf = [].indexOf ?
 function(arr, item) {
  return arr.indexOf(item)
 } :
 function indexOf(arr, item) {
  for (var i = 0; i < arr.length; i++) {
  if (arr[i] === item) {
   return i
  }
  }
  return -1
 }
function unique(arr) {
 var ret = []
 for (var i = 0; i < arr.length; i++) {
 var item = arr[i]
 if (indexOf(ret, item) === -1) {
  ret.push(item)
 }
 }
 return ret
}
Copier après la connexion

method3

Une autre méthode de comparaison utilisant des doubles boucles, la précédente consiste à combiner les éléments du tableau d'origine et le tableau résultat En comparant un par un, ci-dessous nous pouvons mettre le dernier élément des éléments répétés du tableau d'origine dans le tableau

function unique(arr) {
 var ret = [];
 var len = arr.length;
 var isRepeat;
 for(var i=0; i<len; i++) {
  isRepeat = false;
  for(var j=i+1; j<len; j++) {
   if(arr[i] === arr[j]){
    isRepeat = true;
    break;
   }
  }
  if(!isRepeat){
   ret.push(arr[i]);
  }
 }
 return ret;
}
Copier après la connexion

Il existe également une version optimisée

function unique(a) {
 var res = [];
 for (var i = 0, len = a.length; i < len; i++) {
 for (var j = i + 1; j < len; j++) {
  // 这一步十分巧妙
  // 如果发现相同元素
  // 则 i 自增进入下一个循环比较
  if (a[i] === a[j])
  j = ++i; //j = i = i + 1;
 }
 res.push(a[i]);
 }
 return res;
}
Copier après la connexion

méthode4

Utilisez l'objet object en JavaScript comme table de hachage

function dedup(arr) {
 var hashTable = {};
 return arr.filter(function(value,index,arr){
  var key = JSON.stringify(value);
  var match = Boolean(hashTable[key]);
  return (match ? false : hashTable[key] = true);
 });
}
Copier après la connexion

Parce que les valeurs clés​​de Object sont toutes des types String, donc 1 et "1" ne peuvent pas être distingués. améliorez-le légèrement, stockez également le type dans la clé

function dedup(arr) {
 var ret = [];
 var hash = {};
 for(var i = 0; i < arr.length; i++) {
  var item = arr[i];
  var key = typeof(item) + item;
  if(hash[key] !== 1) {
   ret.push(item)
   hash[key] = 1;
  }
 }
 return ret;
}
Copier après la connexion

Recommandations associées :

Code de la méthode PHP pour implémenter la déduplication de tableau

JS est simple Analyse des méthodes pour réaliser la déduplication de tableau

Explication détaillée de la mise en œuvre simple par jQuery des opérations de déduplication et de tri de tableau

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!