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

如何使用Enum枚举引用简化判断,正确获取符合要求的数组值

实现方案

你可以通过遍历优先级属性序列的方式简化逻辑,完全复用现有enums.ORDER枚举,不需要多层if else判断:

getLastActive = (current) => {
  // 按枚举定义的优先级生成属性序列,顺序为 primary -> denary
  const priorityProps = Object.values(enums.ORDER);
  let lastActive;
  // 遍历找到第一个符合条件的元素后终止遍历
  priorityProps.some(prop => {
    const targetItem = current[prop] && current[prop][0];
    if (targetItem && targetItem.coverage.purchaser.name !== 'customer') {
      lastActive = targetItem;
      return true;
    }
    return false;
  });
  return lastActive;
}

逻辑说明

  • Object.values(enums.ORDER)会按枚举数字键的升序返回属性名数组,顺序刚好匹配你需要的primary到denary的优先级,不需要手动维护序列
  • 用some方法遍历属性数组,只要找到第一个符合条件的元素就会终止遍历,和你原有if else的执行逻辑完全一致,不会额外消耗性能
  • 保留了原有逻辑的边界判断:先校验数组首元素存在,再判断属性条件,不会出现属性读取报错

如果你的运行环境支持ES2020+的可选链语法,可以进一步简化判断:

getLastActive = (current) => {
  const priorityProps = Object.values(enums.ORDER);
  let lastActive;
  priorityProps.some(prop => {
    const targetItem = current[prop]?.[0];
    if (targetItem?.coverage?.purchaser?.name !== 'customer') {
      lastActive = targetItem;
      return true;
    }
    return false;
  });
  return lastActive;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:57:01