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으로 재설정하십시오.

관련 문제