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

React中数组索引与表ID不匹配导致if else条件判断失效如何解决

解决方案

有两种常用的实现方案,你可以根据业务场景选择:

方案1:存储时转换为键值对结构(推荐)

直接在存sessionStorage的阶段把数组处理为以分类ID为key的对象,后续取值时间复杂度为O(1),性能最优,且原有取值逻辑几乎不用修改。
处理存储的代码示例:

// 假设接口返回的分类数据为categories数组
const categories = await getCategoriesApi()
// 用reduce转成ID为key的对象
const categoryMap = categories.reduce((result, item) => {
  result[item.id] = item
  return result
}, {})
// 存入sessionStorage
sessionStorage.setItem('categories', JSON.stringify(categoryMap))

后续判断逻辑保持原有写法即可,新增可选链避免异常:

const isShowEdit = JSON.parse(sessionStorage.getItem('categories') as string)?.[rowData.categoryId]?.isEditable === 'Y'

方案2:取值时遍历匹配(适合无法修改存储逻辑的场景)

如果现有业务逻辑依赖categories的数组结构,不方便修改存储格式,可以用find方法匹配对应ID的分类项:

const categories = JSON.parse(sessionStorage.getItem('categories') as string) || []
// 匹配ID一致的分类项
const targetCategory = categories.find(item => item.id === rowData.categoryId)
const isShowEdit = targetCategory?.isEditable === 'Y'

该方案在分类数据量小于1000条时性能差异可忽略,数据量较大时优先选择方案1。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:54:02