Warum gibt JavaScript die falsche Array-Länge zurück?Javascript Array-Problem
var myarray = ['0','1'];
delete myarray[0];
alert(myarray.length); //gives you 2
Warum gibt JavaScript die falsche Array-Länge zurück?Javascript Array-Problem
var myarray = ['0','1'];
delete myarray[0];
alert(myarray.length); //gives you 2
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
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
Nach this docs der Delete-Operator nicht die Länge ofth earray ändern. Sie können splice() dafür verwenden.
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/Objects/Array
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
.
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);
ja. Der andere Code entfernt das Element ebenfalls. Aber es aktualisiert nicht die Länge. –