Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung von vier Methoden zum Entfernen von Duplikaten aus JavaScript-Arrays

黄舟
Freigeben: 2017-09-22 10:04:55
Original
1455 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 Folgenden stellt Ihnen der Herausgeber von Script House eine Vielzahl von Methoden zum Entfernen von Duplikaten aus JS-Arrays vor. Freunde, die sie benötigen, können sich auf

Array-Deduplizierung beziehen und die Deduplizierungsmethode aufrufen, gibt eine Kopie des Werts ohne doppelte Elemente in der Kopie zurück. 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 natürlich davon ausgeht, dass {} und {} als dieselben Elemente gezählt werden, ist die Lösung natürlich unterschiedlich.)

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 Syntaxzucker


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

verwenden, aber in Browsern niedrigerer Versionen gibt es 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 von zu kombinieren Original-Array und das Ergebnis Vergleichen Sie die Arrays einzeln. Als nächstes können wir das letzte Element der wiederholten Elemente des Original-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

Hier ist 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 Speichern Sie 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

Zusammenfassung

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von vier 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