Heim  >  Artikel  >  Web-Frontend  >  Zusammenfassung der Javascript-Kenntnisse zur Deduplizierung von JS-Arrays

Zusammenfassung der Javascript-Kenntnisse zur Deduplizierung von JS-Arrays

WBOY
WBOYOriginal
2016-05-16 15:48:091389Durchsuche

Drei Methoden

Verwenden Sie indexOf, um das neue Array zu bestimmen

Ein ähnlicher indexOf
wird tatsächlich in underscore.js verwendet

 //传入数组
 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;
 }

Verwenden Sie indexOf, um das alte Array zu bestimmen

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

Verwenden Sie Hash zum Suchen

Die hier verwendete Implementierung der JS-Objekte entspricht den Merkmalen der Hash-Tabelle

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

Array-Erweiterung

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

Set verwenden

Set und Map sind neue Datenstrukturen in ES6
Set kann einen nicht doppelten Schlüsselsatz direkt speichern. Dieser Schlüssel kann auch ein Objekt, eine Zeichenfolge usw. sein.
Set erstellen

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

Neues Element

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

Element löschen

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

Elemente traversieren

Map und Set können keine Indizes verwenden
Der ES6-Standard führt einen neuen iterierbaren Typ ein. Array, Map und Set gehören alle zu iterierbaren Typen

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

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

Oder verwenden Sie direkt die integrierte forEach-Methode von iterable
Die forEach-Methode wird durch den ES5.1-Standard

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

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn