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

JavaScript异步获取数组中符合条件项索引的代码优化

优化实现方案

首先原代码除了你提到的待优化点,还存在两个显性bug:

  1. 变量名拼写不一致:遍历中赋值的变量是selectedIdx,最终返回的是未定义的selectedIndex,运行时会直接触发引用错误
  2. 无匹配项时默认返回初始值0,会把索引为0的元素误判为占用项,和无结果的场景混淆

针对你的三个优化诉求,结合业务场景「最多一个占用项」的约束,最终优化代码如下:

async getOccupiedItemIndex() {
  const items = await getItems();
  const targetIndex = items.findIndex(item => item.isOccupied());
  return targetIndex === -1 ? null : targetIndex;
}

优化点说明

  • 写法精简:既然函数已经声明为async,直接用await接收异步返回的数组,去掉冗余的.then链式调用,不需要手动维护临时遍历变量,代码逻辑线性易读
  • 空状态正确:用数组原生findIndex方法做匹配,该方法无匹配项时固定返回-1,判断后返回null即可准确标识无结果的场景,不会出现默认返回0的误判问题
  • 性能更优:findIndex找到第一个符合条件的项后会立刻终止遍历,不需要遍历完整个数组,刚好匹配业务中最多一个占用项的约束,没有多余的遍历开销

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:12:35