Maison  >  Article  >  interface Web  >  Résumé des compétences de méthodes de déduplication de tableau js_javascript

Résumé des compétences de méthodes de déduplication de tableau js_javascript

WBOY
WBOYoriginal
2016-05-16 15:48:091377parcourir

Trois méthodes

Utilisez indexOf pour déterminer le nouveau tableau

Un indexOf similaire
est actuellement utilisé dans underscore.js

 //传入数组
 function unique1(arr){
  var tmpArr = [];
  for(var i=0; i<arr.length; i++){
   //如果当前数组的第i已经保存进了临时数组,那么跳过,
   //否则把当前项push到临时数组里面
   if(tmpArr.indexOf(arr[i]) == -1){
    tmpArr.push(arr[i]);
   }
  }
  return tmpArr;
 }

Utilisez indexOf pour déterminer l'ancien tableau

 function unique2(arr){
  var tmpArr = []; //结果数组
  for(var i=0; i<arr.length; i++){
   //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
   //那么表示第i项是重复的,忽略掉。否则存入结果数组
   if(arr.indexOf(arr[i]) == i){
    tmpArr.push(arr[i]);
   }
  }
  return tmpArr;
 }

Utilisez le hachage pour rechercher

L'implémentation des objets JS utilisés ici correspond aux caractéristiques de la table de hachage

 function unique3(arr){
  var tmpArr = [], hash = {};//hash为hash表
  for(var i=0;i<arr.length;i++){
   if(!hash[arr[i]]){//如果hash表中没有当前项
    hash[arr[i]] = true;//存入hash表
    tmpArr.push(arr[i]);//存入临时数组
   }
  }
  return tmpArr;
 }

Extension du tableau

 Array.prototype.unique1 = function (){
  var tmpArr = []; 
  for (var i = 0; i < this.length; i++){
   if (tmpArr.indexOf(this[i]) == -1){
    tmpArr.push(this[i]);
   }
  }
  return tmpArr;
 }

 Array.prototype.unique2 = function(){
   var tmpArr = []; //结果数组
   for(var i = 0; i < this.length; i++){
    if (this.indexOf(this[i]) == i){
     tmpArr.push(this[i]);
    }
   }
   return tmpArr;
 }

 Array.prototype.unique3 = function(){
   var tmpArr=[], hash = {};
   for(var i = 0; i < this.length; i++){
    if (!hash[this[i]]){
      hash[this[i]] = true; 
      tmpArr.push(this[i]); 
    }
   }
   return tmpArr;
 }

Utiliser Ensemble

Set et Map sont de nouvelles structures de données dans ES6
Set peut stocker directement un ensemble de clés non dupliquées. Cette clé peut également être un objet, une chaîne, etc.
. Créer un ensemble

var s = new Set([1, 2, 3,]);
s; // Set {1, 2, 3}

Nouvel élément

>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}//重复元素不会被添加

Supprimer l'élément

s; // Set {1, 2, 3, 4}
s.delete(3);
s; // Set {1, 2, 4}

Éléments traversants

Map et Set ne peuvent pas utiliser d'indices
La norme ES6 introduit un nouveau type itérable Array, Map et Set appartiennent tous à des types itérables
.

var s = new Set(['A', 'B', 'C']);

for (var x of s) { // 遍历Set
  alert(x);
}

Ou utilisez directement la méthode forEach intégrée à iterable
La méthode forEach est introduite par la norme ES5.1

var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, set) {
  alert(element);
});

Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.

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