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