2014-02-20 2 views
0

for 루프를 사용하여 1-20 사이의 6 개의 임의 숫자를 얻고 indexOf을 사용하여 중복을 생략하고 배열로 푸시합니다.for 루프 및 indexOf를 사용하여 배열에 고정 된 수의 고유 항목 추가

그러나 배열에 6 개의 항목이 항상 필요하므로 중복되도록 대체하고 싶습니다. 내 순진한 코드에서 중복은 단순히 생략됩니다. 즉, 배열에서 6보다 작아 질 때가 있습니다. 6 개의 배열 슬롯을 채우기 위해 누락 된 부분을 어떻게 대체합니까?

function rolld(event:MouseEvent) { 
    for (i = 0; i < 6; i++){ 
     d = (Math.floor(Math.random() * (1 + d_hi - d_lo)) + d_lo); 
     if (rollArray.indexOf(d) < 0){ 
      rollArray.push(d); 
     } 
    } 
    trace (rollArray); 
} 

여전히 매우 새로운 것입니다. 어떤 도움을 주셔서 감사합니다!

답변

0

20 개의 요소가있는 배열에서 요소를 가져 오면 배열에서 요소를 제거하십시오.

function rolld(event:MouseEvent) { 

    var elements:Array = []; 

    for (var i:int = 1; i <= 20; i++) 
    { 
     elements.push(i); 
    } 

    for (i = 0; i < 6; i++){ 

     d = (Math.floor(Math.random() * elements.length); 

     rollArray.push(d); 

     //remove the element 
     elements.splice(d, 1); 
    } 

    trace (rollArray); 
} 
+0

splice를 사용하면 indexOf도 사용할 필요가 없습니다. 맞습니까? 내 주요 문제는 누락 또는 접합 된 모든 것에 대해 생성 된 새로운 난수를 얻는 것입니다. 고마워 – chluaid

+0

한 번에 6 개의 다른 숫자를 생성하는 것 사이에 어떤 차이도 보이지 않으며 몇 번에 생성 할 수 있습니다. 그리고 splice를 사용하면 duplicatenumber가 있는지 확인할 필요가 없습니다. – Pan

+0

예, 대답이 '예'입니까? splice를 사용하면 indexOf를 사용할 필요가 없습니다. 둘 다 나를 위해 잘 작동합니다. 진짜 문제는 중복을 새로운 숫자로 대체하는 방법입니다. 따라서 항상 6 개의 출력이 있습니다. 귀하의 답변을 주셔서 감사합니다,하지만 지금은 새로운 번호로 중복을 대체하는 법을 배워야합니다. – chluaid