# What is wrong here ( mixed juices)

Hello,

Im trying to solve the second part with this as code :

``````function numberOfWedges(lime) {
switch(lime) {
case 'small' : return 6;
case 'medium': return 8;
case 'large' : return 10;
}
}

export function limesToCut(wedgesNeeded, limes) {
let wedges = 0;
let neededLimes = 0;
while (wedges < wedgesNeeded -1 ) {
neededLimes += 1;
let lime = limes.shift();
wedges += numberOfWedges(lime)
}
return neededLimes
}
``````

but in a case of a zero array of when the array is too short to find the wedget they answer is 1 too big.

Can someone help me to find the culprit ?

You may need to add another condition into the `while` statement to make sure that `neededLimes` is not larger than the size of the `limes` array.

``````  test('works if no limes are available', () => {
expect(limesToCut(10, [])).toBe(0);
});
``````

Either you can do what glennj has suggested. Or simpler still, you can consider adding a check to handle this as a special case.

In other words: you cannot `shift()` anything if the array `limes` is already empty.

still the same problem

` ``
limesToCut > uses up all limes if there are not enough to reach the target

``````
``

Expected: 7
``````
``````export function limesToCut(wedgesNeeded,limes){
let limeUsed=0;
let totalLimes=limes.length;
function wedgeCount(size) {
switch(size){
case 'small':
return 6;
case 'medium':
return 8;
case 'large':
return 10;
}
}
while(wedgesNeeded>0){
wedgesNeeded-=wedgeCount(limes[0]);
limes.shift();
limeUsed+=1;
}
if(limeUsed>totalLimes){
}
return limeUsed;
}
``````

Your answer is correct but the total number of elements available are 7 in that array and you are returning 8 as a answer that is why it is not working

Add below “if” construct in your code, before returning actual answer to solve the issue (And don’t forget to refactor variable name)

``````  if(limeUsed>limes.length){
return limes.length;
} // here, I assume you are returning "limeUsed" variable

``````

Happy coding!