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

JavaScript图书库存更新问题:如何正确新增ISBN并处理数量变更?

修复图书馆库存更新逻辑问题

原代码存在以下核心问题,导致重复添加图书或操作异常:

  • 归还图书时,遍历catalogus每一项,只要当前项ISBN不匹配就新增图书,同一ISBN会被重复添加多次
  • 删除库存为0的图书时,错误删除数组第一项,而非对应ISBN的目标图书
  • 嵌套循环逻辑混乱,操作判断与对象查找顺序错误,引发库存更新异常

修复后的代码

// 遍历每日图书操作记录
for (const actie of dagverloop) {
  // 定位当前操作对应的图书
  const targetBoek = catalogus.find(item => item.ISBN === actie.ISBN);

  if (actie.handeling === "uitlening") {
    if (targetBoek) {
      targetBoek.aantal--;
      // 库存归零后移除该图书
      if (targetBoek.aantal === 0) {
        const boekIndex = catalogus.indexOf(targetBoek);
        catalogus.splice(boekIndex, 1);
      }
    }
  } else if (actie.handeling === "teruggave") {
    if (targetBoek) {
      targetBoek.aantal++;
    } else {
      // 图书不存在时新增,初始数量设为1
      catalogus.push({ ISBN: actie.ISBN, aantal: 1 });
    }
  }
}

console.log(catalogus);

关键修复说明

  1. 精准定位图书:使用find方法直接匹配ISBN,替代嵌套循环,避免逻辑混乱
  2. 借出操作处理:找到目标图书后先减少库存,库存归零通过正确索引删除对应条目,不再误删其他图书
  3. 归还操作处理:先检查图书是否存在,存在则增加库存,不存在才新增条目,彻底解决重复添加问题
  4. 简洁遍历:用for...of遍历操作记录,代码可读性更高

执行后catalogus将得到期望结果:5本图书,其中4本数量为1,1本(ISBN 978-0596008642)数量为3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:44:50