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

引数が1つの時は、配列( Object )の各値の中からランダムに1つを返す。第2引数も指定されていた場合は配列の値の位置をランダムに入れ替え、それをindex値の最初から第2引数までsliceした配列を返す。

■使用例

var arr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];

// re = 7
var re = _.sample( arr );

var arr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];

// re = [ 2, 8, 3 ]
var re = _.sample( arr, 3 );

■内部構造

  _.sample = function(obj, n, guard) {

// 第2引数が null または第3引数が undefined じゃない場合。
    if (n == null || guard) {

// 第1引数が Object だった場合、Object の値だけの配列を作る。
      if (!isArrayLike(obj)) obj = _.values(obj);

// length-1と0の間のランダムなindex値の値を返す。
      return obj[_.random(obj.length - 1)];
    }
    
// 配列の値の位置をランダムに入れ替え、それを最初からnまでのsliceした配列を返す。
    return _.shuffle(obj).slice(0, Math.max(0, n));
  };

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