【问题标题】:How to push data coming from setInterval into an array如何将来自 setInterval 的数据推送到数组中
【发布时间】:2018-07-07 15:56:33
【问题描述】:

我的 setInterval 函数应该将数据注入到数组中。它是对象——{id: 0},然后是{id:1}{id:2}...——被注入,并且每次超时触发后 id 的值都会发生变化。但不是将它填充到一个数组中以获得类似[{id:1}, {id:2}, {id:3}...] 的东西,我得到的仍然是相同的值[{id:1}]。我正在使用推送功能:

const arr = [];
arr.push(this.props.test);
console.log(arr);

this.props.test 只是 setInterval 每次触发后的新对象。与我的预期相反,我总是在我的 console.log 中获得最后一个对象。

【问题讨论】:

  • 如果您每次都声明一个新的arr(从您发布的 3 行“代码”看来就是这种情况,甚至根本不包括 setInterval),那么是的,每次您 console.log 时都会有一个条目 - 如果您需要帮助,可能会显示一个最小但完整且可验证的代码示例
  • 欢迎来到SO,请分享Minimal, Complete, and Verifiable example

标签: javascript arrays reactjs object redux


【解决方案1】:

如果我说得对,你需要这样的东西:

const arr = [];
let counter = 0;

setInterval(() => {
  arr.push({id: counter++});
  console.log(JSON.stringify(arr));
}, 2000);

解释:setInterval的第一个参数是一个每2秒执行一次的函数。在此函数中,您创建一个新对象 {id: counter++} 并将其推送到您的数组中。请注意,您需要在 setInterval 之外创建数组 - 否则它将被覆盖

【讨论】:

  • 请添加一些解释以提供真正的帮助。
  • @Barth 不客气!如果我的回答有帮助,请采纳
【解决方案2】:

我猜,你可以把代码‘const arr = []’放在setInterval的回调函数中。这使得每次间隔到来时数组 arr 都被初始化为空。因此,当您对 arr 进行 console.log 时,它总是仅在您的代码最后一次推送对象时打印出来。 您需要将代码'const arr = []'放在setInterval的回调函数之外。

愿它有所帮助。祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 2017-09-19
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多