shuffle() | Underscore JS 日本語リファレンス

配列( 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;
  };

このページのトップへ戻る