Kod:
var scores = [60, 50, 60, 58, 54, 54, 58, 50, 52, 54, 48, 69, 34, 55, 51, 52, 44, 51, 69, 64, 66, 55, 52, 61, 46, 31, 57, 52, 44, 18, 41, 53, 55, 61, 51, 44]; var costs = [.25, .27, .25, .25, .25, .25, .33, .31, .25, .29, .27, .22, .31, .25, .25, .33, .21, .25, .25, .25, .28, .25, .24, .22, .20, .25, .30, .25, .24, .25, .25, .25, .27, .25, .26, .29]; function printAndGetHighScore(scores){ var highScore = 0; var output; for (var i = 0; i < scores.length; i++){ output = "Bubble solution #" + i + " score: " + scores[i]; console.log(output); if (scores[i] > highScore){ highScore = scores[i]; } } return highScore; } function getBestResults(scores, highScore){ var bestSolutions = []; for(var i = 0; i < scores.length; i++){ if(scores[i] == highScore){ bestSolutions.push(i); } } return bestSolutions; } function getMostCostEffectiveSolution(scores, costs, highScore){ var cost = 100; var index; for (var i=0; i< scores.length; i++){ var costsIndex = costs[i]; if(scores[i]>=highScore && costsIndex < cost){ index = scores[i]; cost = costs[i] } } return index; } var mostCostEffective = getMostCostEffectiveSolution(scores, costs, highScore); var highScore = printAndGetHighScore(scores); console.log("Bubbles tests: " + scores.length); console.log("Highest bubble score: " + highScore); var bestSolutions = getBestResults(scores, highScore); console.log("Solutions with the highest score: " + bestSolutions); console.log("Bubble Solution #" + mostCostEffective + " is the most cost effective");
Problemet är funktionen getMostCostEffectiveSolution, som helt enkelt ska jämföra det högsta värdet från scores-Arrayen med motsvarande indexplats i costs-Arrayen, nu kan det finnas flera värden i scores som är lika stora. Ifall det händer ska den alltså ta den hösta värdet från scores, med det lägsta värdet från costs. Helt enkelt, man ska få den bästa produkten(scores) för det lägsta priset (costs). Men förstår inte varför jag får #undefined på utskriften. Och tyvärr har jag ännu inte hunnit sätta mig in i debugging på Javascript, ska försöka kolla igenom någon Youtubefilm om det senare under kvällen. Så tips och förslag på hur man ska felsöka eller åtgärda felet???