Heim  >  Artikel  >  Web-Frontend  >  Zusammenfassung mehrerer Methoden zum Löschen von Arrays in js

Zusammenfassung mehrerer Methoden zum Löschen von Arrays in js

高洛峰
高洛峰Original
2017-01-20 10:57:17935Durchsuche

var arr=['a','b','c'];
Um das 'b' zu löschen, gibt es zwei Methoden:

1.delete-Methode: delete arr [1 ]

Auf diese Weise bleibt die Länge des Arrays unverändert. Zu diesem Zeitpunkt wird arr[1] undefiniert, aber es hat auch den Vorteil, dass der Index des ursprünglichen Arrays unverändert bleibt. Sie können

for(index in arr)
{
 document.write('arr['+index+']='+arr[index]);
}

Diese Traversierungsmethode überspringt undefinierte Elemente

* Diese Methode wird von IE4.o und höher unterstützt

2. Array-Objekt-Spleißmethode: arr. splice (1,1);

Auf diese Weise ändert sich die Array-Länge entsprechend, aber auch der ursprüngliche Array-Index ändert sich entsprechend

Die erste 1 im Spleißparameter ist der Startindex von Löschung (ab Zählung ab 0), hier ist das zweite Element des Arrays

Die zweite 1 ist die Anzahl der gelöschten Elemente, hier wird nur ein Element gelöscht, also 'b';

Dies Beim Durchlaufen der Array-Elemente können Sie die normale Methode zum Durchlaufen des Arrays verwenden, z. B. für, da die gelöschten Elemente nicht im Array erhalten bleiben

* Diese Methode wird erst nach IE5.5 unterstützt

Es ist erwähnenswert, dass die Splice-Methode auch neue Array-Elemente hinzufügen kann

, während Array-Elemente gelöscht werden. Zum Beispiel arr.splice(1,1,'d','e'), zwei Elemente d und e werden hinzugefügt. Das Array arr

Das resultierende Array wird zu arr:'a','d','e','c'

JavaScript schneidet das Array durch Setzen ab Das Längenattribut des Arrays. Es gibt zwei Möglichkeiten, die Länge eines Arrays zu verkürzen. Wenn Sie den Löschoperator verwenden, um ein Element im Array zu löschen, ändert sich die Längeneigenschaft des Arrays nicht Methoden zum Löschen von Elementen und zum Ändern der Länge des Arrays.

  /*
  * 方法:Array.remove(dx)
  * 功能:删除数组元素.
  * 参数:dx删除元素的下标.
  * 返回:在原数组上修改数组
  */
 //经常用的是通过遍历,重构数组.
Array.prototype.remove=function(dx)
 {
  if(isNaN(dx)||dx>this.length){return false;}
  for(var i=0,n=0;i<this.length;i++)
  {
    if(this[i]!=this[dx])
    {
      this[n++]=this[i]
    }
  }
  this.length-=1
 }
 a = [&#39;1&#39;,&#39;2&#39;,&#39;3&#39;,&#39;4&#39;,&#39;5&#39;];
 alert("elements: "+a+"nLength: "+a.length);
 a.remove(0); //删除下标为0的元素
 alert("elements: "+a+"nLength: "+a.length);
/*
  * 方法:Array.baoremove(dx)
  * 功能:删除数组元素.
  * 参数:dx删除元素的下标.
  * 返回:在原数组上修改数组.
  */
  
 //我们也可以用splice来实现.
  
 Array.prototype.baoremove = function(dx)
 {
  if(isNaN(dx)||dx>this.length){return false;}
  this.splice(dx,1);
 }
 b = [&#39;1&#39;,&#39;2&#39;,&#39;3&#39;,&#39;4&#39;,&#39;5&#39;];
 alert("elements: "+b+"nLength: "+b.length);
 b.baoremove(1); //删除下标为1的元素
 alert("elements: "+b+"nLength: "+b.length);

Wir wissen, dass das Array-Objekt (Array) von JavaScript in IE5 oder niedrigeren Versionen keine vorgefertigte Methode zum Löschen eines Arrays bereitstellt Elemente. In der Version von IE5.5+ gibt es zwar eine Spleißmethode, diese löscht jedoch nicht ein bestimmtes Element (oder mehrere Elemente), sondern löscht nur den Wert eines bestimmten Elements (oder mehrerer Elemente), was bedeutet, dass das Element noch vorhanden ist existiert, hat sich die Länge des Arrays nicht geändert.


Tatsächlich können wir selbst eine Löschmethode zum Array hinzufügen (beachten Sie, dass sich dies auf das tatsächliche Entfernen eines Elements aus dem Array aus den Array-Mitgliedern bezieht). Vielleicht möchten Sie das Array mithilfe einer Schleife neu zuweisen. Dies ist zwar möglich, aber sehr ineffizient.

Im Folgenden stellen wir vor, wie Sie die beiden Methoden Slice und Concat des Array-Objekts verwenden, um das Löschen des Arrays anzupassen.

Der spezifische Code lautet wie folgt. Bitte beachten Sie die Kommentare darin.

Array.prototype.del=function(n) { //n表示第几项,从0开始算起。
//prototype为对象原型,注意这里为对象增加自定义方法的方法。
 if(n<0) //如果n<0,则不进行任何操作。
  return this;
 else
  return this.slice(0,n).concat(this.slice(n+1,this.length));
  /*
   concat方法:返回一个新数组,这个新数组是由两个或更多数组组合而成的。
         这里就是返回this.slice(0,n)/this.slice(n+1,this.length)
         组成的新数组,这中间,刚好少了第n项。
   slice方法: 返回一个数组的一段,两个参数,分别指定开始和结束的位置。
  */
}
//我们来试一试这个自己增加的方法
var test=new Array(0,1,2,3,4,5);
test=test.del(3); //从0算起,这里也就是删除第4项。
alert(test);

Auf diese Weise verwenden wir nur die beiden Methoden des Array-Objekts, um unsere Anforderungen zu erfüllen.

Weitere js-Zusammenfassungen verschiedener Methoden zum Löschen von Arrays finden Sie auf der chinesischen PHP-Website für verwandte Artikel!

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