JavaScript:循环遍历数组(而不是弹出)?

标签 javascript

我正在创建 map 标记,我想为 map 上的每个县分配不同的颜色。

我事先不知道 map 上会显示多少个县,所以我需要想办法分配无限数量的颜色。

目前,我正在使用以下代码为每个县分配一种颜色,但是当我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();

当然,将颜色应用于 map 的元素,这样您就不会用相同的颜色为相邻区域着色,这是一个相当有趣的问题。

关于JavaScript:循环遍历数组(而不是弹出)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4557654/

相关文章:

javascript - HTTP请求条件

javascript - 使用 JavaScript 编写 xml 的库

javascript - Protractor 已弃用 getLocationAbsUr

javascript - 动态添加 onclick 事件到选择下拉菜单中的选项

JavaScript 引用数组插入

javascript - 如何在 Jekyll 3 中为 rouge 指定自定义语言解析器别名?

javascript - Bootstrap - 同时切换导航和 Accordion 面板

javascript - HTML 中的谷歌搜索?

javascript - 在 Chrome 中关闭登录弹出窗口时,Metamask 不返回 "code 4001 User rejected the request.",但在 Edge 中有效

javascript - 未在您网站的主页上检测到 Google Analytics(分析)跟踪代码