2016-03-21 21 views
-1
$rowCount = 40 ; 
for (var $j = 0; $j < $rowCount -1; $j++) { 
    var currentNum = #something 
} 

Değerleri currentNum'a uygulayacağım şekilde rastgele bir şekilde döngüleyebileceğim bir mekanizmaya ihtiyacım var.Javascript'te rasgele döngü nasıl?

Örn: Döngünün sonunda currentNum değeri (0....39) olmalıdır. Ancak 0,1,2,3,4,5,6,7,8,.....39'dan itibaren uygulanmamalıdır.

39, 4, 5,17, 28 , 16 .... gibi rastgele bir şekilde uygulanmalıdır ve 0-40 arasındaki tüm numaraları kapsamalıdır. Bunun java'da bir HashMap kullanarak elde edilebileceğini, ancak javascript'te nasıl uygulanacağını düşündüm.

+0

Look up Fisher-Yates karıştır. Java yolun nedir? –

+0

http://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array Gibi [bu] (https://jsfiddle.net/rayon_1990/sp6uvjek/) – Rayon

+0

HashMap garanti edilmez siparişi koru. Ama bunu yapabilir. – Simon

cevap

0
var numbers = Array(rowCount); 
for(var i = 0; i < rowCount; i++) numbers[i] = i; 

shuffle(numbers); // randomly shuffle array elements 

for (var $j = 0; $j < $rowCount -1; $j++) { 
    var currentNum = numbers[i]; 
} 
0

Böyle bir şey deneyebilirsiniz:

var _data = []; 
 
for (var i = 0; i < 40; i++) { 
 
    _data.push(i); 
 
} 
 

 
var result = []; 
 

 
_data.slice().forEach(function(){ 
 
\t result.push(getRandomValue(_data)) 
 
}); 
 

 
function getRandomValue(arr,i) { 
 
    var r = Math.floor(Math.random() * arr.length); 
 
    var result = arr[r]; 
 
    arr.splice(r, 1); 
 
    return result; 
 
} 
 

 
document.write("<pre>" + JSON.stringify(result,0,4) + "</pre>");