(JS)shuffle関数

配列の中身をシャッフルする必要があったので作ってみた(ていうかArrayのメソッドにあってほしかった).

function shuffle(array) {
  var returnArray = [];
  var srcArray = array.slice();
  var remove = function(array, index) {
    var returnArray = [];
    for (var i = 0; i < array.length; i++) {
      if (i == index) {
        continue;
      }
      returnArray.push(array[i]);
    }
    return returnArray;
  }

  while(true) {
    if (srcArray.length === 0) {
      break;
    }

    var i = Math.floor(Math.random() * srcArray.length);
    returnArray.push(srcArray[i]);
    srcArray = remove(srcArray, i);
  }

  return returnArray;
}

var a = [1,2,3,4,5];

a
>[1,2,3,4,5]
shuffle(a);
>[2, 4, 5, 3, 1]
shuffle(a);
>[2, 1, 4, 5, 3]
shuffle(a);
>[1, 5, 2, 4, 3]
a
>[1,2,3,4,5]