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

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

小云云
小云云Original
2018-02-08 11:40:591621Durchsuche

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

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
}

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

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
}

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

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

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

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

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!

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