2016-04-02 22 views
0

javascriptで配列をシャッフルするときに問題があります。 多次元配列はその行を2回シャッフルし、結果はEXACTと同じです。 私は同じ数字が欲しくないが、私は別のシャッフルされた結果が欲しい。シャッフル多次元配列がjavascriptに組み込まれる

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;} 

それはちょうど配列の値をランダム化さ:シャッフル機能がある

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

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

console.log(this.shuffled); 

シャッフル([0,1,2,3])を試してみると、同じ関数を2回呼び出すだけで動作します。 しかしシャッフルを書くとき(this.pairs [0]);私はそれを何回呼び出しても、まったく同じ値を返します。どんな助け?

更新 私はさまざまな変数にそれらを追加するように勧めましたが、まだ動作しません。

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); 

同じこのために行く:

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); 

答えて

-1

は、変数にシャッフル関数の結果を割り当てるようにしてください。

0

問題はthis.nameを使用しています 常に同じ参照を指す 結果は最後のシャッフルコールでオーバーライドされます。 したがって、各シャフリング後に値を新しい変数にコピーする必要があります。