根据以前的值来浏览数组

时间:2016-09-23 21:26:33

标签: javascript arrays

我有一个数组getBgColor()

我想使用这些颜色更改网站的背景颜色。但我不想从这个数组中随机抽取颜色。我想按顺序迭代它。

因此,如果我使用red获取网站的背景颜色并打印setBgColor(currentColor),那么我需要一个函数yellow来打印function setBgColor(currentColor) { var array = ['green', 'red', 'yellow', 'blue']; newColor = array[array.indexOf(currentColor) + 1]; } 。我该怎么做?

我想我应该做点像

$.ajax({
    url: "http://mysitedotcom/blog/json",
    dataType: "jsonp",
    success: jsonpCallback
});
function jsonpCallback(data) {
    console.log(data);
}

但这是正确的做法吗?我如何确保从蓝色变为绿色,从而不超过阵列的长度?

3 个答案:

答案 0 :(得分:5)

您可以将modulo %与数组的长度一起使用。

function setBgColor(currentColor) {
    var array = ['green', 'red', 'yellow', 'blue'],
        newColor = array[(array.indexOf(currentColor) + 1) % array.length ];
    // set the new color
    // ...
}

答案 1 :(得分:0)

只需在您的号码中添加条件即可添加:

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))];

答案 2 :(得分:0)

使用包含当前索引的变量,而不是搜索数组中的颜色。使用模运算来增加索引,以数组大小包围。

var colorIndex = 0;
var colorArray = ['green', 'red', 'yellow', 'blue'];

function setBgColor() {
    colorIndex = (colorIndex + 1) % array.length;
    return colorArray[colorIndex];
}