Heim > Web-Frontend > js-Tutorial > Hauptteil

Zusammenfassung der Javascript-Kenntnisse zur Deduplizierung von JS-Arrays

WBOY
Freigeben: 2016-05-16 15:48:09
Original
1377 Leute haben es durchsucht

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;
 }
Nach dem Login kopieren

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

Nach dem Login kopieren

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;
 }
Nach dem Login kopieren

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

Nach dem Login kopieren

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}

Nach dem Login kopieren

Neues Element

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

Nach dem Login kopieren

Element löschen

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

Nach dem Login kopieren

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

Nach dem Login kopieren

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);
});
Nach dem Login kopieren

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage