Heim > Web-Frontend > js-Tutorial > Gemeinsame Nutzung mehrerer Methoden zum Entfernen von Duplikaten aus JavaScript-Arrays

Gemeinsame Nutzung mehrerer Methoden zum Entfernen von Duplikaten aus JavaScript-Arrays

小云云
Freigeben: 2018-02-08 11:40:59
Original
1647 Leute haben es durchsucht

Array-Deduplizierung. Die allgemeine Anforderung besteht darin, Ihnen ein Array zu geben, die Deduplizierungsmethode aufzurufen und eine Kopie des Werts zurückzugeben. Die Kopie enthält keine doppelten Elemente. Im Allgemeinen werden zwei Elemente, die durch den ===-Vergleich „true“ zurückgeben, als dasselbe Element betrachtet und müssen dedupliziert werden. Daher sind 1 und „1“ unterschiedliche Elemente, und 1 und die neue Zahl (1) sind unterschiedliche Elemente. } und {} sind unterschiedliche Elemente (unterschiedliche Referenzen). (Wenn die Anforderung darin besteht, dass {} und {} als dieselben Elemente gelten, ist die Lösung natürlich unterschiedlich. In diesem Artikel werden Ihnen hauptsächlich mehrere Methoden zum Deduplizieren von JavaScript-Arrays vorgestellt.)

Methode 1

Doppelschleife verwenden

function unique(arr) {
 var res = [];
 for(var i = 0, len = arr.length;i < len; i++) {
  var item = arr[i];
  for(var j = 0, jLen = res.length; j<jLen; j++) {
   if(item == res[j]) break;
  }
  if(j == jLen) res.push(item);
 }
 return res;
}
Nach dem Login kopieren

Methode 2

function unique(arr) {
 var ret = []
 for (var i = 0; i < arr.length; i++) {
 var item = arr[i]
 if (ret.indexOf(item) === -1) {
  ret.push(item)
 }
 }
 return ret
}
Nach dem Login kopieren

Sie können einen syntaktischen Zucker verwenden

function unique(arr) {
 var res = [];
 for(var i = 0, len = arr.length;i < len; i++) {
  var item = arr[i];
  (res.indexOf(item) === -1) && res.push(item);
 }
 return res;
}
Nach dem Login kopieren

In Browsern niedrigerer Versionen gibt es jedoch keinen indexOf

var indexOf = [].indexOf ?
 function(arr, item) {
  return arr.indexOf(item)
 } :
 function indexOf(arr, item) {
  for (var i = 0; i < arr.length; i++) {
  if (arr[i] === item) {
   return i
  }
  }
  return -1
 }
function unique(arr) {
 var ret = []
 for (var i = 0; i < arr.length; i++) {
 var item = arr[i]
 if (indexOf(ret, item) === -1) {
  ret.push(item)
 }
 }
 return ret
}
Nach dem Login kopieren

Methode3

Eine weitere Vergleichsmethode mit Doppelschleifen. Die vorherige besteht darin, die Elemente des ursprünglichen Arrays und des Ergebnisarrays zu kombinieren Wenn wir sie einzeln vergleichen, können wir unten das letzte Element der wiederholten Elemente des ursprünglichen Arrays in das Array einfügen

function unique(arr) {
 var ret = [];
 var len = arr.length;
 var isRepeat;
 for(var i=0; i<len; i++) {
  isRepeat = false;
  for(var j=i+1; j<len; j++) {
   if(arr[i] === arr[j]){
    isRepeat = true;
    break;
   }
  }
  if(!isRepeat){
   ret.push(arr[i]);
  }
 }
 return ret;
}
Nach dem Login kopieren

Es gibt auch eine optimierte Version

function unique(a) {
 var res = [];
 for (var i = 0, len = a.length; i < len; i++) {
 for (var j = i + 1; j < len; j++) {
  // 这一步十分巧妙
  // 如果发现相同元素
  // 则 i 自增进入下一个循环比较
  if (a[i] === a[j])
  j = ++i; //j = i = i + 1;
 }
 res.push(a[i]);
 }
 return res;
}
Nach dem Login kopieren

Methode4

Verwenden Sie das Objektobjekt in JavaScript als Hash-Tabelle

function dedup(arr) {
 var hashTable = {};
 return arr.filter(function(value,index,arr){
  var key = JSON.stringify(value);
  var match = Boolean(hashTable[key]);
  return (match ? false : hashTable[key] = true);
 });
}
Nach dem Login kopieren

Da die Schlüsselwerte von Object alle String-Typen sind, können 1 und „1“ nicht unterschieden werden Verbessern Sie es leicht. Speichern Sie auch den Typ im Schlüssel

function dedup(arr) {
 var ret = [];
 var hash = {};
 for(var i = 0; i < arr.length; i++) {
  var item = arr[i];
  var key = typeof(item) + item;
  if(hash[key] !== 1) {
   ret.push(item)
   hash[key] = 1;
  }
 }
 return ret;
}
Nach dem Login kopieren

Verwandte Empfehlungen:

PHP-Methodencode zur Implementierung der Array-Deduplizierung

JS ist eine einfache Analyse von Methoden zur Erzielung einer Array-Deduplizierung

Detaillierte Erläuterung der einfachen jQuery-Implementierung von Array-Deduplizierungs- und Sortiervorgängen

Das obige ist der detaillierte Inhalt vonGemeinsame Nutzung mehrerer Methoden zum Entfernen von Duplikaten aus JavaScript-Arrays. 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