配列シャッフル 3
配列シャッフル。オリジナルを破壊せず、破壊/非破壊はユーザーの代入先に委ねるパターン。
オリジナルの非破壊的コピーから破壊的に要素を切り出して新規配列に追加。これまでのよりずいぶん軽そう。
多次元配列内の内部はシャッフルされない。
JavaScript
var myArray = [
"a", "b", "c", "d", "e", "f", "g", "h", "i",
"j", "k", "l", "m", "n", "o", "p", "q", "r",
"s", "t", "u", "v", "w", "x", "y", "z", "(・∀・)"
];
var shuffle = function(a) {
var c = a.slice(0),
r = [],
i = 0,
aLen = a.length;
for ( ; i < aLen; i++) {
r.push(c.splice(Math.floor(Math.random() * c.length), 1));
}
return r;
};
//test
var Shuffled = shuffle(myArray);
document.write("混ぜたの : " + Shuffled +"<br />");
document.write("元の配列 : " + myArray);