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

更新对象中数组元素后删除末尾项出现异常的技术问题

问题解答

是的,替换数组第二个元素时必须用扩展运算符(或者其他生成新数组的方式),核心原因是Svelte的writable状态依赖引用变更触发响应式更新:

  • 你原来直接修改数组元素的写法$state.value[1] = 'e'属于原地修改数组,数组本身的引用没有变化,writable可能无法正确追踪到这次元素更新,导致后续删除操作还在基于旧的状态快照执行。
  • 正确的替换方式应该生成新数组,让writable感知到状态变化:
$state.value = [...$state.value.slice(0, 1), 'e', ...$state.value.slice(2)];

另外需要纠正你删除函数的逻辑错误:pop()方法会直接修改原数组并返回被删除的元素,你把返回值赋值给$state.value会导致value从数组变成单个元素(比如第一次删完变成'c',后续操作自然失效)。正确的删除写法应该是创建新数组:

const removeLastItem = function () {
  $state.value = $state.value.slice(0, -1);
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:22:05