(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]