2011-08-27 4 views
1

때로는 임의로 생성 된 문자가 '정의되지 않음'입니다.임의로 생성 된 문자 배열 문제

이유는 무엇입니까?

코드 :

<script type="text/javascript"> 
var myArray= ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; 

randomnumber=Math.floor(Math.random()*27); 
alert(myArray[randomnumber]); 
+0

완벽하게 작동하는 것 같습니다. [jsfiddle] (http://jsfiddle.net/zGghJ/) –

+0

@macek, 한번 이상로드 했습니까? 가장 확실하게 빈 칸이 나옵니다. – Sinetheta

+0

예. 나는 그 jsfiddle에서 복제 할 수 없습니다. – HaloZero

답변

3

글쎄, 당신의 Math.floor 함께 할 수있는 뭔가 (인 Math.random() * 27) 영어 알파벳 26 글자가있을 때 숫자 27를 사용을 할 수 .

math random returns 0-.999... 
math random * 27 returns 0-26.999... 
floor math random * 27 returns 0 - 26 
an array with every english letter has 26 items 
which means it has items indexed from 0-25 

그래서 모든 상자의 1/27에 공란이 생깁니다. "# 다음은"시드 된 후에는

$("#next").text(good[randomnumber]); 

randomnumber=27good[randomnumber]=undefined$("#next").text(undefined) "# 다음"의 내용이 변경되지 않도록 아무것도하지 않는로 대체하고 있기 때문에 그러나, 그것은 항상 "편지"를 유지됩니다. 여전히 부서지기는 어렵지 않습니다. 27에서 26로 변경하면 완료됩니다.

+0

실제로, 영어로 27 자로 된 새 편지에 대한 청원서가 있습니다. 아마도 ogps92는 새로운 표준보다 조금 앞선 것 같습니다. 언젠가 당신의 대답은 틀릴 것이고 우리는 그것을 투표 할 것입니다. : o) – Steve

+0

그게 내가 생각하는 문제를 해결 ...하지만 그것은로드 될 때 처음에만 발생합니다 (다른 임의의 문자가 생성되지 않을 때) – ajax333221

+0

"정의되지 않은" to text()는 아무것도하지 않습니다. http://jsfiddle.net/zGghJ/2/와 같은 결과물을 보면서 궁극적으로 27 : undefined를 보게되고 마지막 상자의 글자는 그대로 유지됩니다. – Sinetheta