You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手开发者求助:为何stock[item]-1无法实现库存数量递减?

问题分析与解决

为什么stock[item]-1无法生效?

stock[item]-1只是完成了减法计算,得到当前库存减1的数值,但没有把这个新值存回stock对象的对应属性里。相当于你算出了新库存,却没把它写回去,所以原库存自然不会变化。

为什么stock = stock[item]-1会报错?

原本stock是一个存储所有商品库存的对象。执行stock = stock[item]-1后,你把stock变量直接改成了一个数字(比如第一次处理香蕉时,变成了6-1=5)。后续循环再访问stock[item]时,就是试图从数字上读取属性——但数字不是对象,不支持这种操作,所以会触发报错。

正确的库存递减写法

要让库存真正减少,必须把计算后的新值重新赋值给对应的属性,两种常用写法:

  • 简洁的复合赋值:
    stock[item] -= 1;
    
  • 显式赋值:
    stock[item] = stock[item] - 1;
    

修改后的完整函数:

function howMuch(){
    let total =0;
    for(let i=0; i<shoppingList.length; i++){
        let item = shoppingList[i];
        if(item in stock){
            if(stock[item]>0){
                total+=prices[item];
                // 正确更新库存
                stock[item] -= 1;
            } else { 
                console.log(`Sorry we don't have ${item}`);
            }
        }
        console.log(total);
    }
}

内容的提问来源于stack exchange,提问作者David Perlow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:39:21