JavaScript:在数组中循环(而不是pop)?

JavaScript:在数组中循环(而不是pop)?,javascript,Javascript,我正在创建地图标记,我想为地图上的每个县指定不同的颜色 我事先不知道地图上会显示多少个县,所以我需要找出一种方法来分配无限数量的颜色 目前,我正在使用以下代码为每个县分配一种颜色,但是当我pop()多次查看列表时,我遇到了一个问题: var colours = ['6183A6', '3A66A7', '3B4990', '5B59BA']; var h_colours = []; // associative array function addMarker(county, colour)

我正在创建地图标记,我想为地图上的每个县指定不同的颜色

我事先不知道地图上会显示多少个县,所以我需要找出一种方法来分配无限数量的颜色

目前,我正在使用以下代码为每个县分配一种颜色,但是当我
pop()
多次查看列表时,我遇到了一个问题:

var colours = ['6183A6', '3A66A7', '3B4990', '5B59BA'];
var h_colours = []; // associative array 
function addMarker(county, colour) {
if (colour==undefined) {
    if (h_colours[hundred]==undefined) {
            h_colours[hundred] = colours.pop();
    } } }
有没有一种方法可以让我在不删除项目的情况下循环浏览列表,并在到达列表末尾时从列表的开始处继续

谢谢

是的

 var getNextColour = (function() {
   var colours = ['6183A6', '3A66A7', '3B4990', '5B59BA'];
   var cc = 0;
   return function() {
     var rv = colours[cc];
     cc = (cc + 1) % colours.length;
     return rv;
   };
 })();
现在你可以说:

 if (colour == undefined) colour = getNextColour();
或者干脆

 colour = colour || getNextColour();

当然,将颜色应用于地图的元素,使相邻区域不使用相同的颜色,这是一个非常有趣的问题。

可以使用计数器作为数组中的索引

每次获取颜色时递增,当它是数组的大小-1时,将其重置为0