Ryusuke Fuda's Tech Blog

Softweare Enginier about Web, iOS, Android.

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の時はブロックとしてみなされて次比べた時の結果によって変動する。