我的对象在数组中被覆盖

时间:2017-02-17 21:59:16

标签: javascript arrays angular object typescript

我有一个函数,每次调用它时都会接收对象,我想将这个对象存储在一个数组中。但是当我在数组中推送到达的对象时,前一个对象被覆盖。如何在每次进入函数时保存对象而不覆盖之前的对象,以便在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);
    }
}

1 个答案:

答案 0 :(得分: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