Heim  >  Artikel  >  Web-Frontend  >  5 JavaScript-Algorithmen zum Entfernen doppelter Elemente aus einem Array

5 JavaScript-Algorithmen zum Entfernen doppelter Elemente aus einem Array

小云云
小云云Original
2018-01-19 09:09:004006Durchsuche

In diesem Artikel werden hauptsächlich fünf häufig verwendete und effiziente Algorithmen zum Löschen doppelter Elemente von Arrays in JavaScript vorgestellt und anhand von Beispielen analysiert Ich hoffe, es kann allen helfen. Hier sind 5 Methoden zur Implementierung der Array-Deduplizierung in js.

1. Array-Traversal-Methode

Die einfachste Methode zum Entfernen von Duplikaten,

Implementierungsideen : Erstellen Sie ein neues Array, durchlaufen Sie das eingehende Array und fügen Sie den Wert hinzu, wenn er nicht im neuen Array enthalten ist. Hinweis: Die Methode „indexOf“ zur Bestimmung, ob sich der Wert im Array befindet, ist eine ECMAScript5-Methode, die von nicht unterstützt wird IE8 und niedriger. Sie müssen mehr Browsercode für Versionen mit geringer Kompatibilität schreiben. Der Quellcode lautet wie folgt:


// 最简单数组去重法
function unique1(array){
 var n = []; //一个新的临时数组
 //遍历当前数组
 for(var i = 0; i < array.length; i++){
  //如果当前数组的第i已经保存进了临时数组,那么跳过,
  //否则把当前项push到临时数组里面
  if (n.indexOf(array[i]) == -1) n.push(array[i]);
 }
 return n;
}
// 判断浏览器是否支持indexOf ,indexOf 为ecmaScript5新方法 IE8以下(包括IE8, IE8只支持部分ecma5)不支持
if (!Array.prototype.indexOf){
 // 新增indexOf方法
 Array.prototype.indexOf = function(item){
  var result = -1, a_item = null;
  if (this.length == 0){
   return result;
  }
  for(var i = 0, len = this.length; i < len; i++){
   a_item = this[i];
   if (a_item === item){
    result = i;
    break;
   } 
  }
  return result;
 }
}

2. Objekt Schlüssel-Wert-Paarung

Diese Methode wird schneller ausgeführt als jede andere Methode, benötigt aber mehr Speicher

Implementierungsidee: Erstellen Sie eine neue js-Objekt und ein neues Array. Beurteilen Sie beim Durchlaufen des eingehenden Arrays, ob der Wert der Schlüssel des js-Objekts ist. Wenn nicht, fügen Sie den Schlüssel zum Objekt hinzu und fügen Sie ihn in ein neues Array ein. Hinweis: Bei der Feststellung, ob es sich um einen js-Objektschlüssel handelt, wird „toString()“ automatisch für den eingehenden Schlüssel ausgeführt. Verschiedene Schlüssel können mit demselben verwechselt werden, zum Beispiel: a[1], a[„1“]. Um das obige Problem zu lösen, müssen Sie noch „indexOf“ aufrufen.


// 速度最快, 占空间最多(空间换时间)
function unique2(array){
 var n = {}, r = [], len = array.length, val, type;
  for (var i = 0; i < array.length; i++) {
    val = array[i];
    type = typeof val;
    if (!n[val]) {
      n[val] = [type];
      r.push(val);
    } else if (n[val].indexOf(type) < 0) {
      n[val].push(type);
      r.push(val);
    }
  }
  return r;
}

3. Array-Index-Beurteilungsmethode

Sie müssen immer noch „indexOf“ aufrufen " Leistung Ähnlich wie bei Methode 1,

Implementierungsidee: Wenn das i-te Element des aktuellen Arrays zum ersten Mal an einer anderen Position als i im aktuellen Array erscheint, bedeutet dies, dass das Das i-te Element wird wiederholt und ignoriert. Verlieren. Andernfalls speichern Sie das Ergebnisarray.


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

4. Angrenzende Entfernungsmethode nach dem Sortieren

Obwohl die „Sortierung“ der natives Array „Die Sortierergebnisse der Methode sind nicht sehr zuverlässig, aber dieser Mangel hat keine Auswirkungen auf die Deduplizierung, die nicht auf die Reihenfolge achtet.“

Implementierungsidee: Sortieren Sie das eingehende Array nach den gleichen Werten und fügen Sie beim Durchlaufen nur Werte hinzu, die keine Duplikate des vorherigen Werts sind das neue Array.


// 将相同的值相邻,然后遍历去除重复值
function unique4(array){
 array.sort(); 
 var re=[array[0]];
 for(var i = 1; i < array.length; i++){
  if( array[i] !== re[re.length-1])
  {
   re.push(array[i]);
  }
 }
 return re;
}

5. Die Methode zur Optimierung der Array-Traversierung

stammt aus ausländischen Blogbeiträgen Der Implementierungscode ist ziemlich cool;

Implementierungsidee: Holen Sie sich den Wert ganz rechts ohne Duplizierung und fügen Sie ihn in ein neues Array ein. (Wenn doppelte Werte erkannt werden, wird die aktuelle Schleife beendet und die nächste Beurteilungsrunde der Schleife der obersten Ebene beginnt)


// 思路:获取没重复的最右一值放入新数组
function unique5(array){
 var r = [];
 for(var i = 0, l = array.length; i < l; i++) {
  for(var j = i + 1; j < l; j++)
   if (array[i] === array[j]) j = ++i;
  r.push(array[i]);
 }
 return r;
}

Verwandte Empfehlungen:

Ausführliche Erläuterung von Ideen und Codebeispielen, wie JavaScript doppelte Elemente aus Arrays entfernt

Empfohlene Zusammenfassung mehrerer JavaScript-Methoden zum Entfernen doppelter Elemente

js-Array Ein Beispiel-Tutorial zum Finden doppelter Elemente in

Das obige ist der detaillierte Inhalt von5 JavaScript-Algorithmen zum Entfernen doppelter Elemente aus einem Array. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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