2012-01-17 4 views
1

현재 3 개의 숫자를 생성하는 난수 생성기 스크립트를 작성 중입니다. 처음 두 숫자는 행과 열을 참조하여 "표"에서 "셀"을 선택하는 데 사용됩니다. 각 셀에는 선택할 수있는 두 개의 숫자가 있습니다. 세 번째 숫자는 선택할 두 숫자 중 하나를 결정합니다. 나는 이것의 대부분을 알아 냈다. 그러나 나는 마지막 부분에 문제가있다.중첩 된 배열의 자바 스크립트

내 "솔루션"은 20 개의 배열을 만들고 각 배열 내에 20 개의 배열이 더 있습니다. 여기

var randOne20 = Math.floor(Math.random()*20); 
var randTwo20 = Math.floor(Math.random()*20); 

는 20 개 배열의 첫 번째 행이다

스크립트 처음 두 숫자를 생성한다 : I는 다음을 헤더

: 여기에서 첫 번째 배열의 한 예이다 :

var lvl1Roll1 = [[ 1,0 ],[ 1,1 ],[ 1,2 ],[ 1,3 ],[ 1,4 ],[ 1,5 ],[ 1,6 ],[ 1,7 ],[ 1,8 ],[ 1,9 ],[ 1,10 ],[ 1,11 ],[ 1,12 ],[ 1,13 ],[ 1,14 ],[ 1,15 ],[ 1,16 ],[ 1,17 ],[ 1,18 ],[ 1,19 ]]; 

번째 행 "lvl1Roll2"일 것이고, 세 번째 "등 lvl1Roll3"까지 줄곧 것 "lvl1Roll20." randOne 변수가 적절한 행을 선택하는 데 사용됩니다

var randOne = randOne20 + 1; 

document.write(window['lvl1Roll'+randOne][randTwo20]); 

: 나는 다음과 같은 스크립트가 몸에

.

(randTwo20 변수를 사용하여) 특정 셀을 선택하는 방법을 알 수 있지만 각 셀에서 첫 번째 또는 두 번째 숫자를 선택하는 방법을 알지 못합니다.

이제 분명히하기 위해 각 셀에서 첫 번째 또는 두 번째 숫자를 선택하는 방법을 알아 내려고 노력하고 있기 때문에 제 3의 난수 생성기 코드를 나열하지 않았습니다. 일단 내가 알아낼 수있는 if/else 문을 사용할 수 있습니다.

또한 숫자를 출력하지 않고 변수로 선택하고 싶다면 어떻게해야합니까?

감사합니다.

....

챠오, 존을 조심하고 좋은 하루 되세요.

+0

또 다른 괄호 인덱스를 표현식에 추가하는 것은 어떻습니까? – Pointy

답변

2

나는 당신이 무엇을하려고하는지 정말로 모르지만 ...배열의 두 번째 요소의 첫 번째를 얻는 것은 같은, arr[0]arr[1]만큼 간단하다 :

// First: 
document.write(window['lvl1Roll'+randOne][randTwo20][0]); 

// Second: 
document.write(window['lvl1Roll'+randOne][randTwo20][1]); 

는 이전 단지 다음과 같은 패턴을 무작위, 대신 Math.floorMath.round를 사용하고 곱하지 않습니다하기 20 :

var randOne20 = Math.floor(Math.random()*20); 
var randTwo20 = Math.floor(Math.random()*20); 
var randOne = Math.round(Math.random()); 

document.write(window['lvl1Roll'+randOne20][randTwo20][randOne]); 

한 가지 더 : 별도의 변수에 다른 행을 넣지 않아도됩니다. 나는 의심 : 당신은 그것을 하나 개의 큰 배열을 만들 수 있습니다

var lvl1Roll = [ 
    [ 
     [ 1,0 ], [ 1,1 ], [ 1,2 ], [ 1,3 ], [ 1,4 ], [ 1,5 ], [ 1,6 ], [ 1,7 ], [ 1,8 ], [ 1,9 ], [ 1,10 ], [ 1,11 ], [ 1,12 ], [ 1,13 ], [ 1,14 ], [ 1,15 ], [ 1,16 ], [ 1,17 ], [ 1,18 ], [ 1,19 ] 
    ], 
    // [ lvl1Roll2 ], 
    // [ lvl1Roll3 ], etc. 
]; 

을 그리고 테이블에서 값을 선택하려면이 옵션을 사용하여 넣어 변수 result에 다음 사용

var result = lvl1Roll[randOne20][randTwo20][randOne]; 

을 그리고 마지막으로 나는 "롤"의 논리를 우리에게 말해 주려고했는데,이 "테이블"이 전혀 필요 없다는 것은 그럴듯한 일입니다. 나는 틀릴 수도 있지만 ... 그것에 대해 또 다른 질문을 게시 할 가치가 있을까요? 그냥 생각.

+0

답장을 보내 주셔서 감사합니다. PPvG, arr [0]/arr [1]은 내가 찾고있는 것입니다. 나는 그것을 시도하고 내가 찾던 결과를 얻지 못했다고 생각했기 때문에 거대한 두뇌 방구가 있었음에 틀림 없다. 방금 해봤는데 제대로 작동했습니다. 감사! 랜덤 함수에 관해서는 1과 20 사이의 임의의 숫자를 생성한다고 언급 했어야합니다. – Mock26

+1

(아마도'[1]'과'[2]'를 시도 했습니까?) 나에게 전화를 걸지 만 .. . 1 + Math.floor (Math.random() * 20)'당신이 필요로하는 것과 정확히 똑같지 않습니까? 1에서 20 사이의 난수를 생성합니다. – PPvG

0

당신은 그 (0과 1을 가정) 두 숫자 사이의 임의 선택하려면 다음

var i = Math.random() < 0.5? 0 : 1; 

또는

var i = Math.random()*2 | 0; 

이 작업을 수행해야합니다. 그래서 :

document.write(window['lvl1Roll'+randOne][randTwo20][i]); 

또는

document.write(window['lvl1Roll'+randOne][randTwo20][Math.random() < 0.5? 0 : 1]); 

또는

document.write(window['lvl1Roll'+randOne][randTwo20][Math.random()*2 | 0); 

당신은 얼마나할까요? :-)

+0

아니면 그냥'Math.round (Math.random()) – PPvG

0

나는 올바르게 이해할 수있는 가장 쉬운 방법은 여러 배열이 포함 된 하나의 배열 것입니다 생각합니다. 첫 번째 배열은 table 배열이며, table 배열의 각 항목은 row이고 row의 각 항목은 cell입니다. 이렇게하면 테이블의 모든 셀을 참조하기가 쉽습니다. 다음은 3 × 3의 예는 다음과 같습니다

var table = [ 
    [0,1,2], 
    [3,4,5], 
    [6,7,8], 
]; 

table[0][0]; // First Row, First Column, Equals 0; 
table[1][1]; // Second Row, Second Column, Equals 4; 
table[2][2]; // Third Row, Third Column, Equals 8; 

당신은 실제로 당신이 원하는 경우 테이블을 만들 배열로 (20 개) 배열을 밀어 수 :

var table = []; 
table.push(randOne20); 
table.push(randTwo20); 
etc... 

을 자동으로 무작위로 배열을로드하려면 숫자를 사용하면 쉽게 반복 할 수 있습니다.

var table = []; 
for (var i = 0; i < 20; i++){ // Create 20 rows 
    var row = []; 
    for (var x=0; i<20; i++){ // Create 20 cells; 
     var cell = [Math.round(Math.random), Math.round(Math.random)]; // Adds a two item array of random 0's or 1's 
     row.push(cell); // Adds the cell to the row 
    } 
    table.push(row); // Adds the row to table 
} 
관련 문제