JavaScript |创建更改数组中值的间隔

标签 javascript arrays angular setinterval

我有一个数组,简化的形式是这样的:

let array = [
  {id: 1, value: 0}, 
  {id: 2, value: 0}, 
  {id: 3, value: 0}
];

现在我想创建一个间隔,每秒递增 id: 3 的对象的值。 我现在要做的就是用 数组[2].value。只要数组不改变,这个方法就有效。

我使用的数组不断变化,这意味着元素以异步方式删除/添加。当发生这种情况时,间隔将指向错误的元素。如果我删除示例中的元素 [1],则间隔现在将指向未定义的元素 ([2])。

我正在考虑使用关联数组(id 作为索引),但在 Angular ngFor 中,当我这样做时,它不再可靠地工作。由于同样的原因,对象也无法工作。

如何创建一个间隔,即使索引发生变化,该间隔也会更改数组元素的属性?或者有更好的方法来解决我的问题吗?

最佳答案

使用find方法:

function updateValue () {
   var item = array.find(item => item.id === 3)
   if (item) item.value++
}

setTimeout(updateValue, 1000)

关于JavaScript |创建更改数组中值的间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47845288/

相关文章:

arrays - 如何一次过滤多个 "Arrays"?

angular - webpack 重建时 Awesome-TypeScript-Loader 错误

javascript - 在服务器上运行 Node.js 的要求

javascript - 单击监听器以 ajax 加载内容。纯javascript

php - 数组的第一个元素 $$foo

javascript - 访问节点 firebase 并检查值

javascript - 来自环境变量的Angular 2 base href

angular - 如何以 Angular 5 获取基本网址?

javascript - 收到 grunt-istanbul 错误 : No coverage information was collected

javascript - 只计算给定类(class)的 child