如何更新数组中的元素并保留其原有索引?
保留数组索引的状态更新方案
你当前的代码先过滤掉旧元素再将新元素放到数组头部,这会改变目标元素的原有位置和索引。要实现仅更新指定元素内容、同时保留其在数组中的原索引,可以用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
相关产品推荐
相关产品推荐

