Heim >Web-Frontend >js-Tutorial >Empfohlene Methoden zum Entfernen doppelter Werte aus Arrays in JavaScript_Javascript-Kenntnissen
Array-Deduplizierung ist eine häufige Anforderung. Wir werden vorübergehend die Deduplizierung von Arrays desselben Typs in Betracht ziehen. Es geht vor allem darum, Ideen zu klären und die Leistung zu berücksichtigen. Die folgenden Methoden sind grundsätzlich im Internet verfügbar und werden hier nur kurz zusammengefasst.
Dinge:
1. Durchlaufen Sie das Array und vergleichen Sie einen nach dem anderen. Wenn der Vergleich derselbe ist, löschen Sie den folgenden
2. Durchlaufen Sie das Array, vergleichen Sie sie einzeln und überspringen Sie die vorherigen Duplikate, wenn sie nicht identisch sind, und fügen Sie sie in das neue Array ein
3. Nehmen Sie ein beliebiges Array-Element und fügen Sie es in das neue Array ein, durchlaufen Sie die verbleibenden Array-Elemente, nehmen Sie ein beliebiges Element und vergleichen Sie es einzeln mit den Elementen des neuen Arrays. Wenn es Unterschiede gibt, fügen Sie es in das neue Array ein.
4. Durchlaufen Sie das Array, nehmen Sie ein Element als Attribut des Objekts und bestimmen Sie, ob das Attribut vorhanden ist
1. Löschen Sie die folgenden Duplikate:
function ov1(arr){ //var a1=((new Date).getTime()) for(var i=0;i<arr.length;i++) for(var j=i+1;j<arr.length;j++) if(arr[i]===arr[j]){arr.splice(j,1);j--;} //console.info((new Date).getTime()-a1) return arr.sort(function(a,b){return a-b}); }
2. Dies ist eine herkömmliche Methode, die leichter zu verstehen ist. Wenn sie gleich sind, springen Sie aus der Schleife
function ov2(a) { //var a1=((new Date).getTime()) var b = [], n = a.length, i, j; for (i = 0; i < n; i++) { for (j = i + 1; j < n; j++) if (a[i] === a[j]){j=false;break;} if(j)b.push(a[i]); } //console.info((new Date).getTime()-a1) return b.sort(function(a,b){return a-b}); }
3. Es hat lange gedauert, bis ich das verstanden habe. Obwohl die j-Schleife hier fortgesetzt wird, hat sich der i-Wert geändert. Es entspricht einer neuen i-Schleife:
function ov3(a) { //var a1=((new Date).getTime()) var b = [], n = a.length, i, j; for (i = 0; i < n; i++) { for (j = i + 1; j < n; j++) if (a[i] === a[j])j=++i b.push(a[i]);} //console.info((new Date).getTime()-a1) return b.sort(function(a,b){return a-b}); }
4. Stellen Sie sicher, dass alles im neuen Array eindeutig ist
function ov4(ar){ //var a1=((new Date).getTime()) var m=[],f; for(var i=0;i<ar.length;i++){ f=true; for(var j=0;j<m.length;j++) if(ar[i]===m[j]){f=false;break;}; if(f)m.push(ar[i])} //console.info((new Date).getTime()-a1) return m.sort(function(a,b){return a-b}); }
5. Objektattribute verwenden
function ov5(ar){ // var a1=(new Date).getTime() var m,n=[],o= {}; for (var i=0;(m= ar[i])!==undefined;i++) if (!o[m]){n.push(m);o[m]=true;} // console.info((new Date).getTime()-a1) return n.sort(function(a,b){return a-b});; }
Die oben empfohlenen Methoden zum Entfernen doppelter Werte aus JavaScript-Arrays sind alle vom Herausgeber freigegebenen Inhalte. Ich hoffe, dass sie Ihnen eine Referenz geben können, und ich hoffe, dass Sie Script Home unterstützen.