Heim > Web-Frontend > js-Tutorial > Welche Möglichkeiten gibt es, doppelte Elemente aus einem Array in JS zu löschen?

Welche Möglichkeiten gibt es, doppelte Elemente aus einem Array in JS zu löschen?

php中世界最好的语言
Freigeben: 2018-04-13 13:33:02
Original
1654 Leute haben es durchsucht

Dieses Mal werde ich Ihnen die Methoden zum Löschen doppelter Elemente von Arrays in JS vorstellen und welche Vorsichtsmaßnahmen zum Löschen doppelter Elemente von Arrays in JS gelten. Das Folgende ist ein praktischer Fall , lass uns einen Blick darauf werfen.

Hier sind 5 Methoden zur Implementierung der Array-Deduplizierung in js. Eine Demo und ein Quellcode sind beigefügt.

1.Array durchqueren Methode

Die einfachste Methode zum Entfernen von Duplikaten,

Implementierungsidee: Erstellen Sie ein neues Array, durchlaufen Sie das eingehende Array und fügen Sie den Wert zum neuen Array hinzu, wenn er nicht im neuen Array enthalten ist. Hinweis: Die Methode „indexOf“ ermittelt, ob der Wert vorhanden ist Das Array ist eine ECMAScript5-Methode, die unter IE8 nicht unterstützt wird. Sie müssen mehr Code schreiben, der mit Browsern niedrigerer Versionen kompatibel ist. 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;
 }
}
Nach dem Login kopieren

2. Objekt-Schlüssel-Wert-Paar-Methode

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

Implementierungsidee: Erstellen Sie beim Durchlaufen des eingehenden Arrays, ob der Wert der Schlüssel des js-Objekts ist, und fügen Sie ihn ein das neue Array. Notiz: 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 beispielsweise mit demselben verwechselt werden: 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;
}
Nach dem Login kopieren

3. Array-Index-Beurteilungsmethode

Sie müssen noch „indexOf“ aufrufen, die Leistung ist ähnlich wie bei Methode 1,

Implementierungsidee: Wenn das erste Vorkommen des i-ten Elements im aktuellen Array nicht i im aktuellen Array ist, bedeutet dies, dass das i-te Element wiederholt und ignoriert wird. 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;
}
Nach dem Login kopieren

4. Angrenzende Entfernungsmethode nach dem Sortieren

Obwohl die Sortierergebnisse der „Sort“-Methode nativer Arrays nicht sehr zuverlässig sind, hat dieser Mangel keine Auswirkungen auf die Deduplizierung, bei der die Reihenfolge nicht berücksichtigt wird.

Implementierungsidee: Sortieren Sie das eingehende -Array Nach dem Sortieren liegen dieselben Werte nebeneinander, und beim Durchlaufen fügt das neue Array nur Werte hinzu, die keine Duplikate davon sind vorheriger Wert.

// 将相同的值相邻,然后遍历去除重复值
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;
}
Nach dem Login kopieren

5. Array-Traversal-Methode optimieren

Aus einem ausländischen Blogbeitrag geht hervor, dass der Implementierungscode dieser Methode ziemlich cool ist

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)

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall gelesen haben Für weitere spannende Informationen beachten Sie bitte die anderen verwandten Themen im Artikel auf der chinesischen PHP-Website!
// 思路:获取没重复的最右一值放入新数组
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;
}
Nach dem Login kopieren

Empfohlene Lektüre:

Verwenden von laravel5.3 vue zum Erstellen einer Favoritenfunktion


Datenübertragung und vue.js Ausführliche Erklärung der Datenverteilungsschritte


Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten gibt es, doppelte Elemente aus einem Array in JS zu löschen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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