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

咨询替代多层嵌套条件运算符的更优代码实现方案

优化方案:用映射表替代嵌套条件判断

直接通过对象映射表管理不同s值对应的处理逻辑,彻底解决嵌套混乱、新增数据易崩溃的问题,同时大幅提升代码的可读性与扩展性。

重构后的代码

async function getTargetValue(s, index) {
  const logicMap = {
    FFP: () => o.ffp,
    XP: async () => (await getXP(index, true)) || o.e.xpLvl * o.e.xp,
    FSC: () => o.fsc,
    BGP: () => o.bgp,
    BTN: () => btns[index] || 0,
    CIV: async () => await getCiv(index) || 0,
    TIQ: async () => await getTotalInv(index) || 0,
    IS1: () => isold[index] || 0,
    ITO: () => acn[index]?.cache?.itemsObtained || 0,
    FLW: () => flws[index] || 0,
    PLY: () => acn[index]?.playtime || 0,
    QSC: () => qusc[index]?.completed || 0,
    QSR: () => qusc[index]?.rankings || 0,
    DXP: () => dbs.xp[index] || 0,
    FPS: () => etcscores.fps[index] || 0,
    SMN: () => index === "admin_907" ? 1 : 0
  };

  const handleLogic = logicMap[s];
  return handleLogic ? await handleLogic() : "N/A";
}

核心优势

  • 可读性极强:所有s对应的处理逻辑一目了然,无需层层嵌套查找
  • 扩展性拉满:新增数据时,仅需在logicMap中添加一行键值对,完全不影响原有代码,从根源避免新增操作导致的崩溃
  • 防错能力提升:用可选链?.替代直接属性访问(如acn[index]?.cache?.itemsObtained),避免因属性不存在抛出错误,这很可能是你之前新增数据崩溃的核心原因
  • 错误处理更灵活:可针对异步逻辑单独添加try/catch,避免单个逻辑出错影响整体流程

额外优化建议

  • 若o、btns、acn等变量不是全局变量,建议作为参数传入函数,减少全局依赖带来的隐式问题
  • 给异步逻辑添加错误捕获,示例:
    CIV: async () => {
      try {
        return await getCiv(index) || 0;
      } catch (err) {
        console.error('获取CIV数据失败:', err);
        return 0;
      }
    },
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 11:37:05