2014-01-15 3 views
1

배열에 동적으로 액세스하려고합니다. 그렇지 않으면 실제 코드가 buildablesets1과 buildablesets2 일 때 실제로 코드를 복제해야합니다.변수를 사용하는 동적 배열

var buildablesets1 = [""]; 
var buildablesets2 = [""]; 
var buildablesetsx = "buildablesets" + playerturn; 

for (var i = 0; i < set.length; i++) { 
    if (doesOwnSet('player'+playerturn, set[i])) { 
    if(playerturn===1) buildablesets1.push(set[i]); 
    } 
} 

if (buildablesetsx.length > 1){ 
    var b = $("#buildsets"+playerturn); 
    for (k = 1; k < buildablesetsx.length; k++){ 
    b.append("<option value='" + buildablesetsx[k]+ "'>" + buildablesetsx[k] + "</option>"); 
    } 
} 

코드는 플레이어가 소유 한 모든 세트를 buildablesetsX에 푸시합니다. 그런 다음 #buildsetsX 드롭 다운 상자에 모든 소유 세트가 채워집니다. 1. buildablesetsX의 영향을 얻으려면 어떻게해야합니까? X는 플레이어 턴에 따라 다릅니다. 2. 추가 할 때마다 복제 할 때마다 드롭 다운 상자를 축소하고 싶습니다. (이 작업을 수행하는 더 좋은 방법을 apreciate, 이상적으로 새 집합이있을 경우에만 드롭 다운 상자를 채우고 싶습니다.)

플러스 죄송합니다. 이전에이 질문에 대해 질문했지만 이해하지 못했습니다.

+2

두 개의 변수 대신 배열을 사용하십시오 :'buildablesets = [[ ""], [ ""]]'? – Barmar

+0

'window [buildablesetsx]'또는 Barmar가 제안한대로 더 나은 코딩을 사용하십시오 –

+0

@Barmar buildablesets은 각 플레이어마다 고유합니다 ... 어떻게 작동하는지 모르겠습니다. 어쩌면 당신이 염두에두고있는 것을 게시 할 수 있습니다. –

답변

2

일련 번호가있는 변수를 만들고 동적으로 액세스하고자 할 때마다 실제로 사용해야하는 것은 배열입니다. 이 경우, 2 차원 배열을 사용한다 :

var buildablesets = [[""], [""]]; 

제 사이즈는 플레이어 번호, 제 사이즈는 플레이어가 내장되어 세트들의 목록이다.

특정 선수의 세트에 액세스하려면, 수행 위의 변수 할당과, 그것을 작성한으로 코드의

buildablesetsx = buildablesets[playerturn]; 

나머지는 작동합니다.

+0

buildable 세트에 들어가는 것은 "Navy", "Red", "Orange"등 총 8 개입니다. 그러나 그 세트를 소유 한 사람은 다를 수 있습니다. –

+0

나는 대답을 업데이트했다, 나는 그것을 명확하게 만들었 으면 좋겠다. 변수로 할 수있는 일은 배열 요소로 할 수 있습니다. – Barmar

+0

아마'buildablesets'가 2 차원 배열 인 것을 보지 못했을 것입니다. 각 요소는 특정 플레이어와 연결된 하위 배열입니다. – Barmar

관련 문제