JSFiddle - React, Tailwind, and code Playground
by jsumners
HTML
<div id="output" style="white-space: pre;">
</div>
JavaScript
var $output = $('#output');
var entrants = {
"sanctum": [5, 12, 1, 2, 3, 10],
"semaj": [1, 1, 3, 10],
"astra": [1, 20, 15, 10]
};
var Bucket = function() {
if (!(this instanceof Bucket)) {
return new Bucket();
}
this.entries = [];
this.prizes = [];
};
Bucket.prototype.addEntry = function(name) {
this.entries.push(name);
};
Bucket.prototype.shuffle = function() {
// https://github.com/coolaj86/knuth-shuffle
var currIndex = this.entries.length,
tempValue, randomIndex;
while (0 !== currIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currIndex = currIndex - 1;
tempValue = this.entries[currIndex];
this.entries[currIndex] = this.entries[randomIndex];
this.entries[randomIndex] = tempValue;
}
};
var buckets = (function() {
var obj = {};
for (var i = 1; i <= 20; i += 1) {
obj["bucket_" + i] = new Bucket();
}
return obj;
}());
for (var entrant in entrants) {
if (!entrants.hasOwnProperty(entrant)) {
continue;
}
var ar = entrants[entrant];
for (var i = 0, j = ar.length; i < j; i += 1) {
buckets["bucket_" + ar[i]].addEntry(entrant);
}
}
for (var bucket in buckets) {
if (!buckets.hasOwnProperty(bucket)) {
continue;
}
buckets[bucket].shuffle();
}
$output.append(JSON.stringify(buckets, null, "\t"));