Heim >Web-Frontend >js-Tutorial >Empfohlene Methoden zum Entfernen doppelter Werte aus Arrays in JavaScript_Javascript-Kenntnissen

Empfohlene Methoden zum Entfernen doppelter Werte aus Arrays in JavaScript_Javascript-Kenntnissen

WBOY
WBOYOriginal
2016-05-16 15:05:551460Durchsuche

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.

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