2016-04-02 14 views
0

Javascript'te bir dizinin karıştırılmasıyla ilgili bir sorunum var. Çok boyutlu bir dizi, satırını iki kez karıştırır ve sonuç, aynı sayıların döndürülmesiyle sonuçlanır. Aynı sayıları istemiyorum, ancak farklı karıştırılmış sonuçlar istiyorum.Javascript'te çok boyutlu bir dizinin karıştırılması açıldı

this.pairs = [ 
    [0, 1, 2, 3] 
]; 

this.shuffled = [ 
    [shuffle(this.pairs[0])], 
    [shuffle(this.pairs[0])] 
]; 

console.log(this.shuffled); 

karıştır fonksiyonudur Nerede:

function shuffle(array) { 
for (var i = array.length - 1; i > 0; i--) { 
    var j = Math.floor(Math.random() * (i + 1)); 
    var temp = array[i]; 
    array[i] = array[j]; 
    array[j] = temp; 
} 
return array;} 

Sadece dizi değerlerini randomize.

Şimdi karıştırmayı denediğimde ([0,1,2,3]), aynı işlevi iki kez çağırırsam çalışır. Ama ben karıştırdığımda (this.pairs [0]); Kaç kez aradığımda tam olarak aynı değerleri verir. Herhangi bir yardım? Farklı değişkenleri eklemek için önerildiği gibi Sonra çalıştı

GÜNCELLEME hala çalışmıyor. Aynı

this.pairs = [ 
    [0, 1], 
    [0, 1] 
]; 

var level1 = this.pairs[0]; 
var level2 = this.pairs[0]; 

this.shuffled = [ 
    shuffle(level1), 
    shuffle(level2) 
]; 

console.log(this.shuffled); 

bu için de geçerli:

this.pairs = [ 
    [0, 1], 
    [0, 1] 
]; 

var level1 = shuffle(this.pairs[0]); 
var level2 = shuffle(this.pairs[0]); 

this.shuffled = [ 
    level1, 
    level2 
]; 

console.log(this.shuffled); 

cevap

-1

deneyin bir değişkene karışık işlevi sonucunu atamak.

0

Sorun, this.name kullanıyorsunuz, Aynı referansa işaret edecek her zaman Sonuç, son shuffle çağrısı ile geçersiz kılınır. Bu nedenle, her karıştırmadan sonra değeri yeni bir değişkene kopyalamanız gerekir.