JSFiddle - React, Tailwind, and code Playground
by nwellcome
JavaScript
function getMeHired(scoreList) {
var scoreLength = scoreList.length; //get scoreList's size
var gradeList = []; //create something to hold our letter grades
var leftOver = scoreLength % 5;
var baseHolding = scoreLength / 5;
var sortedScores = scoreList.sort();
var previousScore = 0;
var LowerA, LowerB, LowerC, LowerD;
var leftOversUsed = 0;
for (var i = 0; i < scoreLength; i++) //run through sorted scores and define grade bounds
{
if (i + 1 == baseHolding) //if in the first 20%
{
if (leftOver == 0) //and divided nicely
LowerA = sortedScores[i]; //we found our lower bound for A
else { //if not divided nicely
leftOver--; //take a leftover
leftOversUsed++; //count it
i++; //increase our array position
LowerA = sortedScores[i]; //and then make the lower bound
}
}
console.log("i: " + i + " baseHolding: " + baseHolding + " leftoverUsed: " + leftOversUsed);
if (i - baseHolding + 1 + leftOversUsed == baseHolding && previousScore != sortedScores[i]) { //if we are in the second 20% give or take a leftover/indentical score
if (leftOver == 0) //no leftovers?
LowerB = sortedScores[i]; //great we found our B grade bound
else { //ugh leftovers again?
leftOver--; //get rid of them
leftOversUsed++; //count it
i++; //increase our position
LowerB = sortedScores[i]; //give us our B bound
}
}
if (i - baseHolding * 2 + 1 + leftOversUsed == baseHolding && previousScore != sortedScores[i]) { //now to find out third 20% or so
if (leftOver == 0) //finally no leftovers?
LowerC = sortedScores[i]; //found our C bound
else { //getting fed up with leftovers
leftOver--; //get rid of one
leftOversUsed++; //count...