javascript - 更改数组中下一项的值
问题描述
我正在尝试制作一个简单的 vue.js 滑块。我有一个每 10 秒运行一次来更改活动项目的方法。我无法将下一个项目设置为活动状态。
this.items.forEach(function(item, index, arr) {
if(item.active == true)
{
console.log(arr[index+1].active);
arr[index+1].active = true;
}
});
第一行返回false
或任何正确的值。
第二行返回cannot read value active of undefined
。
整个事情都在一个 Vue.js 方法中——有没有更优雅的方法来做到这一点?
解决方案
上面这段代码的问题是,如果您将项目设置为活动并循环它,那么它之后的所有项目也将处于活动状态。
当你到达最后一个索引时,它不会是 index+1。这是未定义的,因此您得到的错误。
为什么要循环?存储索引处于活动状态并添加一个
this.activeIndex = 0
而不是在你的下一个代码中
this.items[this.activeIndex].active = false
this.activeIndex++
if (this.activeIndex >= this.items.length) {
this.activeIndex = 0
}
this.items[this.activeIndex].active = true
推荐阅读
- angular - 无法从 '@angular/forms' 导入“导入 {FormGroup, FormControl}
- c - 我的 do while 循环永远不会结束,因为我在其中使用 strcmp
- python - 试图标准化/规范化数据以进入 CNN,但遇到问题
- javascript - 如何在 React 中将数据传递给 Chart.js 图表
- node.js - puppeteer - 获取元素句柄的完整 x 路径
- c# - 发出属性的显式接口实现
- reactjs - React-Native 暗模式不起作用:)
- audiokit - 持续时间为倍数的 AKPlayer 是否支持同步循环?
- python - 如何使if语句按顺序执行?
- regex - .htaccess 漂亮的 url 格式不剥离斜杠