当包含减法条件时,我在 JavaScript 中的 while 循环陷入无限循环

My while loop in JavaScript gets stuck in an infinite loop when the subtractive condition is included

我正在做这个练习,你必须计算获得果汁所需的酸橙数量。 它需要一个内部的 switch 语句来取出“limes”数组的第一个元素(并且可以完美地工作)。直到我添加条件来倒计时楔形:即使在 cases 中指定减去确定的数量,在每次迭代中它似乎都会忽略它并且永远不会满足打破 switch 语句所需的条件

这是代码

function limesToCut(wedgesNeeded, limes) {
    let limesNeeded = 0
    while(limes.length != 0 || wedgesNeeded > 0 ) {    
        switch (limes[0]) {          
            case 'small':       
                limes.shift() 
                limesNeeded += 1
                wedgesNeeded -= 6
                break;
            case 'medium': 
                limes.shift()
                limesNeeded += 1
                wedgesNeeded -= 8
                break;
            case 'large': 
                limes.shift()
                limesNeeded += 1
                wedgesNeeded -= 10
                break;
            default:
                break  
        } 
    }
    console.log(limesNeeded)
}

//test cases

console.log("case 1")
limesToCut(4, ['medium', 'small'])
console.log("case 2")
limesToCut(80,['small','large','large','medium','small','large','large',])
console.log("case 3")
limesToCut(0, ['small', 'large', 'medium'])
console.log("case 4")
limesToCut(10, [])

我哪里错了?即使我从循环中排除其他条件,它似乎也无法正常工作

在评论中引用@James: 这是因为对于您的某些测试用例,limes.length != 0 || wedgesNeeded > 0 始终为真,因此它陷入了循环。考虑这样一种情况,您需要 80 个楔形,但只有 7 个酸橙可以产生 70 个楔形顶部(如果它们都是最大尺寸的话)。所以没有酸橙了,只有 wedgesNeeded > 0,所以它循环再循环。