Reputation: 3
I am confused as to why my function continues to loop. wedgesNeeded = number, limes = array
function limesToCut(wedgesNeeded, limes) {
let total = 0
while (wedgesNeeded > 0) {
let lime = limes.shift()
switch (lime) {
case 'small':
wedgesNeeded -= 6;
total++;
break;
case 'medium':
wedgesNeeded -= 8;
total++;
break;
default:
}
}
return total
}
console.log(limesToCut(12, ['small','small']));
Upvotes: 0
Views: 50
Reputation: 209
Your situation occurs when the wedgesNeeded
is much bigger than what you expect; Your loop will empty the limes
array but wedgesNeeded
is still bigger than 0
function limesToCut(wedgesNeeded, limes) {
let total = 0
while (wedgesNeeded > 0 && !!limes.length) {
let lime = limes.shift()
switch (lime) {
case 'small':
wedgesNeeded -= 6;
total++;
break;
case 'medium':
wedgesNeeded -= 8;
total++;
break;
default:
}
}
return total
}
count = limesToCut(200000, ['small', 'medium', 'small', 'medium', 'small', 'medium'])
console.log(count)
Edit: Replaced the if condition by while condition!
Upvotes: 1