UNPKG

1.24 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.srandmember = srandmember;
7
8var _lodash = require('lodash');
9
10var _es6Set = require('es6-set');
11
12var _es6Set2 = _interopRequireDefault(_es6Set);
13
14var _arrayFrom = require('array-from');
15
16var _arrayFrom2 = _interopRequireDefault(_arrayFrom);
17
18function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
20function srandmember(key, count) {
21 if (this.data.has(key) && !(this.data.get(key) instanceof _es6Set2.default)) {
22 throw new Error('Key ' + key + ' does not contain a set');
23 }
24
25 var set = this.data.get(key) || new _es6Set2.default();
26 var list = (0, _arrayFrom2.default)(set);
27 var total = list.length;
28
29 if (total === 0) {
30 return null;
31 }
32
33 var shouldReturnArray = count !== undefined;
34 var max = shouldReturnArray ? Math.abs(count) : 1;
35 var skipDuplicates = shouldReturnArray && count > -1;
36
37 if (skipDuplicates) {
38 return (0, _lodash.shuffle)(list.splice(0, max));
39 }
40
41 var items = [];
42 var results = 0;
43 while (results < max) {
44 var item = list[(0, _lodash.random)(0, total - 1)];
45 items.push(item);
46
47 results += 1;
48 }
49
50 return shouldReturnArray ? items : items[0];
51}
\No newline at end of file