【Underscore.js】_.sampleを読んだ
jashkenas/underscoreの_.sampleを読んだ。
概要
_.sample(list, [n])
listからn個のランダムな値を取り出す。nが指定されない時は1つ取り出す。
var list = [1, 4, 15, 200, 3]; var x = _.sample(list); console.log(x); // 4
ソースコード
_.sample = function(obj, n, guard) { if (n == null || guard) { if (!isArrayLike(obj)) obj = _.values(obj); return obj[_.random(obj.length - 1)]; } return _.shuffle(obj).slice(0, Math.max(0, n)); };
第三引数のguardは_.mapと組み合わせて使う時にうまく動作するように指定してある。 isArrayLike(obj) = falseになるのは、listにオブジェクト等を渡した時。その場合は、プロパティvalueの中からランダムで値が取得される。