2010-12-29 8 views
1

マップマーカーを作成しています。地図上の各郡に異なる色を割り当てたいと思います。JavaScript:配列を循環する(ポップではなく)?

マップ上にいくつの郡が表示されているかは事前に分かりませんので、色を無制限に割り当てる方法を見つけ出す必要があります。

瞬間、私は次のコードを使用して、各郡に色を割り当てるんだけど、私はリストにあまりにも多くの時間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(); 
    } } } 

は私ができる方法はあります実際にアイテムを削除せずにリストを循環させ、最後に到達したらリストの始めから続けるのですか?

ありがとうございました!

答えて

8

はい。

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

アレイのインデックスにカウンタを使用できます。

インクリメントカラーをフェッチするたびに、配列-1のサイズで0にリセットします。

関連する問題