配列( Object )の各値の位置をランダムに入れ替えた配列を返す関数。
■使用例
var arr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
// [ 7, 1, 10, 5, 6, 4, 3, 8, 9, 2 ]
var re = _.shuffle( arr );
var obj = { one : 1, two : 2, three : 3 };
// [ 2, 1, 3 ]
var re = _.shuffle( obj );
■内部構造
_.shuffle = function(obj) {
// 引数「obj」が配列か arguments だったらそのまま。Object だったら Object の値の配列を作る。
var set = isArrayLike(obj) ? obj : _.values(obj);
var length = set.length;
// 結果を入れる配列を作る。
var shuffled = Array(length);
// 引数「obj」の値をランダムに入れ替えた配列を作るforループ。
for (var index = 0, rand; index < length; index++) {
rand = _.random(0, index);
// 配列のnullを排除しているif。shuffled[index] = shuffled[rand]; が空席を埋める機能を果たしている。
if (rand !== index) shuffled[index] = shuffled[rand];
shuffled[rand] = set[index];
}
return shuffled;
};