2010-01-21 4 views

Antwort

13

Die "Löschen" ändert nicht das Array, aber die Elemente in das Array:

# x = [0,1]; 
# delete x[0] 
# x 
[undefined, 1] 

Was Sie brauchen, ist array.splice

5

Sie haben Array.splice verwenden - siehe http://www.w3schools.com/jsref/jsref_splice.asp

myarray.splice(0, 1); 

diese wird dann das erste Element entfernen

+2

ja. Der andere Code entfernt das Element ebenfalls. Aber es aktualisiert nicht die Länge. –

1

Nach this docs der Delete-Operator nicht die Länge ofth earray ändern. Sie können splice() dafür verwenden.

1

Von MDC Dokumentation des Array.

„Wenn Sie ein Array-Element löschen, die Feldlänge nicht beeinträchtigt wird Für Beispiel, wenn Sie ein [3] löschen, a [4] ist noch a [4] und a [3] ist nicht definiert. Diese gilt auch, wenn Sie das letzte Element des Arrays löschen (löschen a [a.length-1]). "

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/delete_Operator

https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Array

0

Das ist die normales Verhalten. Die Funktion delete() löscht nicht den Index, sondern nur den Inhalt des Index. Sie haben also immer noch 2 Elemente im Array, aber bei Index 0 haben Sie undefined.

1

Sie können dies mit John Resig ist schön remove() Methode:

Array.prototype.remove = function(from, to) { 
    var rest = this.slice((to || from) + 1 || this.length); 
    this.length = from < 0 ? this.length + from : from; 
    return this.push.apply(this, rest); 
}; 

als

// Remove the second item from the array 
array.remove(1); 
// Remove the second-to-last item from the array 
array.remove(-2); 
// Remove the second and third items from the array 
array.remove(1,2); 
// Remove the last and second-to-last items from the array 
array.remove(-2,-1); 
Verwandte Themen