Javascript array.push替换先前添加的元素

时间:2019-07-05 07:30:20

标签: javascript arrays for-loop foreach botframework

我正在用对象填充数组。每次for循环迭代时,它都会更新数组的先前项目。

我尝试过各种循环,例如for-each,for和for of。

var arrResult = new Array;

for (let element of accessoriesToDisplay) {
    var obj = {};
    var obj = await AdaptiveCardImporter.accessoryCard(element.Name,
     element.Price, element.ProductDescription, element.URL, element.ImgURL);
    arrResult.push(obj);
}

此数组的末尾应该有3个不同的对象,而不是仅用最后一个填充的数组。 在我将附件卡方法移至主要js文件之外之前,此代码已起作用。

观察者:

Loop-1

Loop-2

Loop-3

1 个答案:

答案 0 :(得分:0)

您编码的概念还不错。您的代码应该可以正常执行,但是问题出在等待中-某些事情不正确。例如,重新编写代码的工作原理是:

if (document.activeElement instanceof HTMLElement)
    document.activeElement.blur();

但是您的代码却没有。在每次循环迭代中尝试const getObj = e => new Promise(resolve => setTimeout(() => resolve({val:e}), 300)) async function main() { var arrResult = [] var accessoriesToDisplay = [1, 2, 3] for (let element of accessoriesToDisplay) { var obj = await getObj(element) console.log(obj) arrResult.push(obj); } console.log(arrResult) } main()来检查返回的对象是否确实是您要寻找的对象-chrome喜欢通过自动更新值来提供帮助。