shuffleAndGroup
by JuanMa Garrido
HTML
<script src="https://code.jquery.com/jquery-2.2.0.js"></script>
<label>select size of group</label>
<select>
<option value="">default (=2)</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
</select>
<button>go!</button>
Babel + JSX
var students = [ "Niall", "Stuart", "Martin", "Eduard", "Shane", "Eoin", "Obi", "Joseph", "Ciaran", "Darragh", "John", "Brian", "Dave", "Henry" ]
var shuffleAndGroup = ( students, sizeGroups=2) => {
var shuffled = students.sort( () => (.5-Math.random()) )
var grouped = shuffled.reduce( ( acc, current, index ) => {
index%sizeGroups? acc[acc.length-1].push(current) : acc.push([current]);
return acc;
},[])
return grouped;
}
$("button").click(function() {
var sizeGroup = $("select option:selected").val() ||Â undefined;
var shuffledAndGrouped = shuffleAndGroup(students,sizeGroup);
console.clear(); console.info(shuffledAndGrouped.length + " groups of " + (sizeGroup || 2) + " members each")
shuffledAndGrouped.forEach( ( current, index ) => {
console.dir ( current )
})
});