Maison  >  Article  >  interface Web  >  Résumé des méthodes de déduplication de tableau JS

Résumé des méthodes de déduplication de tableau JS

小云云
小云云original
2018-03-17 16:36:021629parcourir

Cet article partage principalement avec vous un résumé des méthodes de déduplication des baies JS. Il existe sept méthodes au total. J'espère qu'il pourra aider tout le monde.

Le moyen le plus simple :

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18


var arr=[2,8,5,0,5,2,6,7,2];
fonction unique1(arr){
  var hash=[] ;
  for (var i = 0; i < arr.length; i++) {
     if(hash.indexOf(arr[i])==-1){
      hash.push(arr[ i]);
     }
  }
  return hash ;

}


Méthode 1 :

Boucle à double niveau, élément de boucle externe, comparer la valeur lors de la boucle interne

S'il y a Si les valeurs sont les mêmes, elles seront ignorées. Si elles ne sont pas les mêmes, elles seront poussées dans le tableau >2

34

<🎜. >56
7

8

9

10

11

12

13

14

15

16

17

18


Array.prototype.distinct = function(){

var arr = 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]);

}

return result;

}

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ément de boucle externe, valeur de comparaison de boucle interne

Lorsque les valeurs sont les mêmes, supprimez cette valeur

Remarque : après avoir supprimé l'élément, vous devez réduire la longueur du tableau de 1.

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19


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 : utilisation élevée de la mémoire et vitesse lente

Méthode 3 : Utiliser les propriétés d'objets qui ne peuvent pas être identiques pour dédoublonner

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17


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 des tableaux

Utiliser l'idée de récursion

Trier d'abord, puis comparer à partir de la fin , si vous rencontrez la même chose, alors supprimez


?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20


Array.prototype.distinct = function (){

var arr = this,

len = arr.length;

arr.sort(function(a,b){ //对数组进行排序才能方便比较

return a - b;

})

function loop(index){

if(index >= 1){</span></strong></span></span></p> <p class="line number9 index8 alt2" style="line-height:15.4px;margin:0px;padding:0px 1em;background-image:none;border:0px;float:none;height:auto;vertical-align:baseline;width:auto;min-height:auto;white-space:pre;"><code class="js spaces" style="margin:3px auto 0px;padding:0px 0px 0px 5px;background:rgb(255,255,255);border-left:3px solid rgb(108,226,108);width:640px;font-size:14px;clear:both;border-top:0px;border-right:0px;border-bottom:0px;float:none;height:auto;vertical-align:baseline;font-family:Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;min-height:auto;">   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 : Utiliser indexOf et forEach

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


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 l'ensemble d'ES6

Définissez la structure de données, qui est similaire à un tableau, et les valeurs de ses membres sont toutes uniques.

Utilisez Array.from pour convertir la structure Set en tableau

?

1

2

3

4


function dedupe(array){

 return Array.from(new Set(array));

}

dedupe([1,1,2,3]) //[1,2,3]

L'opérateur spread (...) utilise en interne la boucle for...of

?

1

2

3


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

Méthode concat()

Idée : La méthode concat() combine le tableau entrant ou la valeur non-tableau avec le tableau d'origine pour former un nouveau tableau et le renvoie. Cette méthode générera un nouveau tableau.


1

2

3

4

5


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.

?

1

2

3

4

5

6

7

8

9

10


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 l'exemple de déduplication de tableau JS

Partage de six méthodes pour supprimer les doublons des tableaux JS

Partage de plusieurs méthodes pour 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