javascript - Mina objekt skrivs över i array
Jag har en funktion som tar emot ett objekt varje gång den anropas, jag vill lagra detta objekt i en array. Men när jag lägger till det mottagna objektet i arrayen skrivs det tidigare objektet över. Hur sparar jag objekten utan att skriva över de tidigare varje gång jag är i funktionen, så att alla objekt skrivs ut i for()-funktionen.
drawtimeline(i_items, nom_cal, _hitoService, idcalbuscador) {
var container = document.getElementById('timeLine');
var result: any[] = [];
result.push({ "_id": this.idcalbuscador, "title": nom_cal });
for (let i of result) {
console.log(i);
alert(i);
}
}
Svar #1
Din result-variabel är lokal för drawtimeline-funktionen. När den funktionen är klar med att köra rensas result-variabeln. När funktionen kallas igen allokeras en ny result-array, vilket får det att se ut som om du raderar det gamla objektet som lagrades i arrayen. Varje gång du kör funktionen skriver du ut en separat array som innehåller det enda objektet du precis har lagt till.
Lösningen är att ta ut result-variabeln ur funktionen och in i det yttre scopet. Detaljerna kommer att bero på om denna funktion är en del av ett modul, en klass eller fristående. Vanligtvis kommer det att se ut så här:
var result: any[] = [];
drawtimeline(i_items, nom_cal, _hitoService, idcalbuscador) {
var container = document.getElementById('timeLine');
result.push({ "_id": this.idcalbuscador, "title": nom_cal });
for (let i of result) {
console.log(i);
alert(i);
}
}
Om du är i en klass, behöver du använda this.result
