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

如何更新数组中的元素并保留其原有索引?

保留数组索引的状态更新方案

你当前的代码先过滤掉旧元素再将新元素放到数组头部,这会改变目标元素的原有位置和索引。要实现仅更新指定元素内容、同时保留其在数组中的原索引,可以用Array.map()来处理:

if(response.events.includes('databases.*.collections.*.documents.*.update')) {
  setMemos(prevState => 
    prevState.map(memo => 
      // 匹配到目标ID时替换为新内容,其余元素保持不变
      memo.$id === response.payload.$id ? response.payload : memo
    )
  )
}

原理说明

  • map()方法会遍历原数组的每一个元素,按照原顺序返回新数组
  • 仅当元素的$id与response.payload.$id匹配时,才用新的payload替换该元素
  • 未匹配的元素直接保留原内容和位置,因此整个数组的索引结构完全不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:42:05