根据前一个值遍历数组
Go through array based on previous value
我有一个数组['green', 'red', 'yellow', 'blue']
。
我想用这些颜色来改变我网站的背景色。但我不想从这个数组中随机取一个颜色。我想按顺序迭代。
所以如果我用getBgColor()
得到我的网站的背景色,它打印red
,然后我想要一个函数setBgColor(currentColor)
来打印yellow
。我该怎么做呢?
我想我应该写一些像
function setBgColor(currentColor) {
var array = ['green', 'red', 'yellow', 'blue'];
newColor = array[array.indexOf(currentColor) + 1];
}
但这是正确的方法吗?我如何确保从蓝色变为绿色而不超过数组的长度?
可以用%
对数组的长度取模
function setBgColor(currentColor) {
var array = ['green', 'red', 'yellow', 'blue'],
newColor = array[(array.indexOf(currentColor) + 1) % array.length ];
// set the new color
// ...
}
在你的号码中加入一个条件:
var array = ['green', 'red', 'yellow', 'blue'],
last_index = array.length - 1,
thisIndex = array.indexOf(currentColor);
return array[thisIndex + (thisIndex !== last_index ? 1 : (-1 * last_index))];
使用包含当前索引的变量,而不是在数组中搜索颜色。使用模运算来增加索引,围绕数组的大小。
var colorIndex = 0;
var colorArray = ['green', 'red', 'yellow', 'blue'];
function setBgColor() {
colorIndex = (colorIndex + 1) % array.length;
return colorArray[colorIndex];
}
相关文章:
- 循环遍历包含另一个表单的表单
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- 遍历SC.ManyArrray以创建要附加到SproutCore中的另一个视图的自定义视图
- 我想遍历一个对象数组,我不想要任何重复项
- 我可以遍历一个p标签并更改为ul吗
- Meteor:如何遍历一个数组,这是一个异步方法的结果
- 遍历下一个和上一个 jQuery 选项卡
- jQuery循环遍历每个li并检查一个类
- 循环遍历JQueryUI选项卡控件中的每个选项卡,并构建一个对象数组
- jquery slideDown()遍历最后一个元素
- 循环遍历所有字段,如果任何一个字段的验证失败jquery,则返回false
- jQuery-遍历一个父级并设置ID
- 如何在中断之前遍历此 for 循环中的所有城市?现在它只是迭代一个
- 循环遍历 Angular HTTP 请求中的对象,等到响应后再运行下一个循环
- 创建并遍历一个在 JavaScript 中不从零开始的多维数组
- 在jquery中遍历一个json
- 菜单遍历下一个和上一个按钮单击
- 遍历一个通用的 JavaScript 集合
- 创建一个遍历 JSON 的 Javascript 函数
- Javascript,在一个遍历树分支的自调用回避函数中,如何记录每个分支级别