2017-02-17 51 views
3

我有一個函數,每次調用時都會接收對象,我想將這個對象存儲在一個數組中。但是當我將數組中的到達對象壓入時,以前的對象被覆蓋。每次在函數中如何保存對象而不覆蓋以前的對象,以便所有對象都被打印在for()函數中。我的對象被覆蓋在數組中

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); 
    } 
} 

回答

4

result變量是本地drawtimeline功能。當該函數完成執行時,將清除result變量。當再次調用該函數時,會分配一個新的result數組,這使您看起來像清除存儲在數組中的舊對象。每次運行函數時,都會打印一個包含剛剛推送的單個對象的單獨數組。

解決的辦法是將result變量從函數中拉出並放到外部作用域中。細節將取決於該功能是模塊,班級還是裸機的一部分。通常它會是這樣的:

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); 
    } 
} 

如果你是在一個類中,你將需要使用this.result