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

Relaterade artiklar