Array Shuffle

Basic array shuffler function using Fisher-Yates shuffle mechanic

by TokenEx Support

HTML

<label for="employees">Employees</label>
<textarea id="employees">
Autumn
Brent
Bryan
Candice
Christy
Heather
Jay
Nicole
Laoleng
Derrick
Jamie
Zane
Avery
Bob
Christopher
Dillon
Hayden
Jennifer
Jenny
Jessica
Josh
Judith
Kari
Mason
Matthew
Ryan
Savannah
Sherrill
Tim
Ward
Andrew
Kishor
Misty
Joshua
Jeffrey
Mark
Sean
Troy
Jacob
John
Mike
Stephanie</textarea>
<br/>
 <button id ="shuffle" type="button">Shuffle!</button> 
<br/>
<br/>
<ul id=alexList>

</ul>

<ul id=mattList>

</ul>

<ul id=justinList>

</ul>

CSS

ul {
  float: left;
}

JavaScript

$( "#shuffle" ).click(function() {
	var employeeList = document.getElementById("employees").value.split(/\r?\n/);
var shuffledEmployees = shuffleArray(employeeList);

var chunkedArray = chunkify(shuffledEmployees,3);

$('#alexList').empty()
$('#mattList').empty()
$('#justinList').empty()

for(var i = 0; i < chunkedArray.length; i++)
{
	for(var x = 0; x < chunkedArray[i].length; x++)
  {
      if(i == 0)
      {
        setValue(chunkedArray[i][x], "alexList");
      }
        if(i == 1)
      {
        setValue(chunkedArray[i][x], "mattList");
      }
        if(i == 2)
      {
        setValue(chunkedArray[i][x], "justinList");
      }
  }
}
});



function setValue(val, list) {
  var ul = document.getElementById(list);
  var li = document.createElement("li");
  li.appendChild(document.createTextNode(val));
  ul.appendChild(li);
}
//console.log(shuffleArray(array)));

/** FUNCTION
 * Randomize array element order in-place.
 * Using Fisher-Yates shuffle algorithm.
 */
function shuffleArray(array) {
    for (var i = array.length - 1; i > 0; i--) {
        var j = Math.floor(Math.random() * (i + 1));
        var temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
    return array;
}

function chunkify(a, n, balanced) {
    
    if (n < 2)
        return [a];

    var len = a.length,
            out = [],
            i = 0,
            size;

    if (len % n === 0) {
        size = Math.floor(len / n);
        while (i < len) {
            out.push(a.slice(i, i += size));
        }
    }

    else if (balanced) {
        while (i < len) {
            size = Math.ceil((len - i) / n--);
            out.push(a.slice(i, i += size));
        }
    }

    else {

        n--;
        size = Math.floor(len / n);
        if (len % size === 0)
            size--;
        while (i < size * n) {
            out.push(a.slice(i, i += size));
        }
        out.push(a.slice(size * n));

    }

    return out;
}