ProblemWird mit delete und anschließend .push() auf einen Array-Effekt Leistung/Speicherverbrauch?
delete
auf einem Array-Elemente Mit ihm aus dem Array zu entfernen, ist der einzige Weg, ich bin bewusst ein Element aus einem Array zu entfernen, so dass ein .forEach()
Aufruf den Index überspringt.
Fragen
- Hat die
delete
auf einem Index verwenden,exampleArray[i]
zum Beispiel ein nachfolgendesexampleArray.push()
bewirken, dass der Speicher Verbrauch des Array-Objekts erhöhen? Wie funktioniert löschen ein Objekt Effekt der Garbage Collector?
Gibt es eine effizientere Methode, ein
exampleArray
eines Elements zu entfernen?
Beispiel der ehemaligen
var exampleArray = [];
var n = 500;
//Does this line imply a memory allocation?
exampleArray.length = n;
exampleArray.fill("Lorem Ipsum", 0);
exampleArray.forEach(function(cur, ind, arr) {
if(ind % 4 === 0) {
delete arr[ind]; //Actually deletes the object itself, index no longer exists
//Length does not change, however. Does available memory?
}
}, this);
n /= 4;
//Where, in memory, are these placed?
while(n--) exampleArray.push("amet dolor");
Jede Hilfe ist willkommen, danke.
Ihre Annahmen sind alle ziemlich falsch. 'delete' ist nicht der einzige Weg, um einen Index aus einem Array zu entfernen, in der Tat, es tut dies überhaupt nicht, und ist nicht einmal für Arrays gedacht? Wie wirkt sich das auf den Garbage Collector und alles andere aus? – adeneo
Ich habe keine Vermutungen gemacht, obwohl es sich anhört wie du es hast. Ich sagte, es sei die einzige Art und Weise, auf die ich mich bewusst war, mich aufzuklären? –
@AndrueAnderson Wenn Sie nach kurzen und süßen Antworten auf Ihre Fragen suchen, sind sie 1) nein 2) es nicht 3) [] .splice – Andbdrew