当索引大于数组长度时,Javascript 循环回到数组开头

标签 javascript arrays loops indexing

我一直在到处寻找解决方案,但我似乎无法在任何地方找到答案!也许我只是错误地表述了我的问题,但是如果索引大于数组长度,我如何循环回到数组的开头?请参阅下面我的代码作为示例:

// Array of colours
let colours = ["#FFBE36", "#FF6447", "#77FF47", "#D547FF", "#FF9E47", "#47DBFF", "#FF4770"];

// For each pack, a background colour from the array above is assigned. 
// However, these are fetched from a database so could be more than the 
// length of the array
var packs = document.getElementsByClassName("pack-item");
for (var i = 0, len = packs.length; i < len; i++) {
    // Here if i is larger than colours.length, loop back to start of 
    // colours array, e.g colours[8] = "#FFBE36"
    packs[i].style.backgroundColor = colours[i];
}

我希望这是有道理的?如果您希望我以不同的措辞/更详细地解释,请告诉我!

谢谢:)

最佳答案

您可以使用模运算符 (%) 来完成此操作,如下所示。这将使计数器保持正确的长度并且颜色保持顺序。

// Array of colours
let colours = ["#FFBE36", "#FF6447", "#77FF47", "#D547FF", "#FF9E47", "#47DBFF", "#FF4770"];

// For each pack, a background colour from the array above is assigned. 
// However, these are fetched from a database so could be more than the 
// length of the array
var packs = document.getElementsByClassName("pack-item");
for (var i = 0, len = packs.length; i < len; i++) {
    // Here if i is larger than colours.length, loop back to start of 
    // colours array 
    packs[i].style.backgroundColor = colours[i % colours.length];
}

关于当索引大于数组长度时,Javascript 循环回到数组开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64760623/

相关文章:

c++ - 在容器上(循环期间)重复调用 size() 是否不好?

python - 使用 BeautifulSoup 进行 HTML 解析

javascript - 是的,React Hook Form : How to validate onChange rather than onSubmit

javascript - 为什么 Closure Compiler 会生成不同的语法?

c++ - 如何在构造函数中初始化 char 数组?

ios - 如何获取另一个数组中存在的每个数组的对象计数?

arrays - 如果它们包含一些字符串,则从数组中删除它们

javascript 用正则表达式分割

javascript - 在找到英雄单词切换器时,对所有单词进行更改

java - 交换两个数组的值,创建另一个不重复的数组并从最高到最低排序