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

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

WBOY
Libérer: 2016-05-16 15:48:09
original
1387 Les gens l'ont consulté

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

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;
 }

Copier après la connexion

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

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;
 }

Copier après la connexion

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}

Copier après la connexion

Nouvel élément

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

Copier après la connexion

Supprimer l'élément

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

Copier après la connexion

É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);
}

Copier après la connexion

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

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

É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