javascriptで配列をシャッフル(Javascript)
JSにはPHPのような配列をシャッフルする関数が用意されていない。
自分で関数を作るしかない。
■ 方法①
var test = new Array(a,b,c,d,e,f); test = arrayShuffle(test); //shuffle array function arrayShuffle(list){ var d, c, b = list.length; while(b){ c = Math.floor(Math.random() * b); // 配列の数だけ乱数生成 d = list[--b]; // dは配列の数マイナス1 list[b] = list[c]; // 配列の乱数番目に list[c] = d; } return list; }
■ 方法②sort()関数を使う。
var test = new Array(a,b,c,d,e,f); test.sort( function (a, b){ return Math.ceil(Math.random() * 3) - 2; } );
testの配列を順番に比べていき、Math.ceil(Math.random() * 3) - 2 が+なら入れ替え、-ならそのまま。0の時はブロックとしてみなされて次比べた時の結果によって変動する。