Heim > Artikel > Web-Frontend > Sechs Möglichkeiten, Duplikate aus JS-Arrays zu entfernen
Methode 1:
Doppelschichtige Schleife, Elemente der äußeren Schleife, Werte während der inneren Schleife vergleichen
Wenn es dieselben Werte gibt, überspringen Sie sie, wenn nicht, schieben Sie sie hinein das Array
Dieser Artikel stellt Ihnen hauptsächlich sechs Methoden zur Deduplizierung von JS-Arrays vor. Ich hoffe, er kann Ihnen helfen.
Array.prototype.distinct =function(){ vararr = this, result = [], i, j, len = arr.length; for(i = 0; i < len; i++){ for(j = i + 1; j < len; j++){ if(arr[i] === arr[j]){ j = ++i; } } result.push(arr[i]); } returnresult; } var arra = [1,2,3,4,4,1,1,2,1,1,1]; arra.distinct(); //返回[3,4,2,1]
Methode 2: Verwenden Sie Spleiß, um direkt am ursprünglichen Array zu arbeiten
Doppelschichtige Schleife, Elemente der äußeren Schleife, Werte während der inneren Schleife vergleichen
Wann Die Werte sind gleich. Dann löschen Sie diesen Wert
Hinweis: Nach dem Löschen des Elements müssen Sie die Länge des Arrays um 1 reduzieren.
Array.prototype.distinct = function (){ var arr = this, i, j, len = arr.length; for(i = 0; i < len; i++){ for(j = i + 1; j < len; j++){ if(arr[i] == arr[j]){ arr.splice(j,1); len--; j--; } } } return arr; }; var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,]; var b = a.distinct(); console.log(b.toString()); //1,2,3,4,5,6,56
Vorteile: Einfach und leicht zu verstehen
Nachteile: belegt Hoher Speicher, langsame Geschwindigkeit
Methode 3: Verwenden Sie die Eigenschaften, dass die Eigenschaften von Objekten nicht gleich sein können, um sie zu deduplizieren
Array.prototype.distinct = function (){ var arr = this, i, obj = {}, result = [], len = arr.length; for(i = 0; i< arr.length; i++){ if(!obj[arr[i]]){ //如果能查找到,证明数组元素重复了 obj[arr[i]] = 1; result.push(arr[i]); } } return result; }; var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,]; var b = a.distinct(); console.log(b.toString()); //1,2,3,4,5,6,56
Methode 4: Rekursive Array-Deduplizierung
Rekursion verwenden
wird zuerst sortiert und dann am Ende verglichen,
Array.prototype.distinct = function (){ var arr = this, len = arr.length; arr.sort(function(a,b){ //对数组进行排序才能方便比较 return a - b; }) function loop(index){ if(index >= 1){ if(arr[index] === arr[index-1]){ arr.splice(index,1); } loop(index - 1); //递归loop函数进行去重 } } loop(len-1); return arr; }; var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,56,45,56]; var b = a.distinct(); console.log(b.toString()); //1,2,3,4,5,6,45,56
: Verwenden Sie indexOf und forEach
Array.prototype.distinct = function (){ var arr = this, result = [], len = arr.length; arr.forEach(function(v, i ,arr){ //这里利用map,filter方法也可以实现 var bool = arr.indexOf(v,i+1); //从传入参数的下一个索引值开始寻找是否存在重复 if(bool === -1){ result.push(v); } }) return result; }; var a = [1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,2,3,3,2,2,1,23,1,23,2,3,2,3,2,3]; var b = a.distinct(); console.log(b.toString()); //1,23,2,3
Methode 6: Verwenden Sie den Satz von ES6
Legen Sie die Datenstruktur fest, die einem Array ähnelt und deren Werte eindeutig sind.
Verwenden Sie Array.from, um die Set-Struktur in ein Array umzuwandeln
function dedupe(array){ return Array.from(new Set(array)); } dedupe([1,1,2,3]) //[1,2,3]
Der Erweiterungsoperator (...) verwendet intern eine for...of-Schleife
let arr = [1,2,3,3]; let resultarr = [...new Set(arr)]; console.log(resultarr); //[1,2,3]
Das Folgende ist eine ergänzende Einführung in die Methode zum Zusammenführen von Arrays und Entfernen von Duplikaten
1. concat()-Methode
Idee: Die concat()-Methode führt das eingehende Array oder nicht- Array-Wert mit dem Original-Array erstellen und zurückgeben. Diese Methode generiert ein neues Array.
function concatArr(arr1, arr2){ var arr = arr1.concat(arr2); arr = unique1(arr);//再引用上面的任意一个去重方法 return arr; }
2. Array.prototype.push.apply()
Idee: Der Vorteil dieser Methode besteht darin, dass kein neues Array generiert wird.
var a = [1, 2, 3]; var b = [4, 5, 6]; Array.prototype.push.apply(a, b);//a=[1,2,3,4,5,6] //等效于:a.push.apply(a, b); //也等效于[].push.apply(a, b); function concatArray(arr1,arr2){ Array.prototype.push.apply(arr1, arr2); arr1 = unique1(arr1); return arr1; }
Verwandte Empfehlungen:
Detaillierte Erläuterung der JS-Array-Deduplizierung und -Deflattening
Array-Deduplizierungsanalyse in JavaScript und Python
Mehrere Möglichkeiten zum Entfernen von Duplikaten aus JavaScript-Arrays
Das obige ist der detaillierte Inhalt vonSechs Möglichkeiten, Duplikate aus JS-Arrays zu entfernen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!