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

如何优雅替换对象数组指定元素的部分属性(保留id)

更优雅的实现方式

针对你的需求,这里有几种比逐个解构赋值更简洁优雅的实现思路:

1. 使用 Object.assign 直接合并属性

这是最简洁的写法,利用Object.assign把payload的属性直接覆盖到目标数组元素上,因为payload里没有id属性,所以原元素的id会被完整保留:

Object.assign(myArray[0], payload);

这种方式会直接修改原数组中的对象,代码量最少,适合不需要保留原对象引用的场景。

2. 展开运算符创建新对象(Immutable 风格)

如果希望不直接修改原对象,而是生成新对象替换数组中的元素(符合函数式编程的 immutable 原则),可以用展开运算符:

myArray[0] = { ...myArray[0], ...payload };

这里会先展开原对象的所有属性,再用payload的属性覆盖对应字段,最终生成包含原id和新属性的新对象,替换掉数组里的旧元素。

3. 解构赋值结合展开运算符(明确保留 id)

如果想更清晰地体现“保留id”这个逻辑,可以先解构出原对象的id,再和payload合并:

const { id, ...unusedProps } = myArray[0];
myArray[0] = { id, ...payload };

这种写法可读性更强,一眼就能看出我们特意保留了id字段,其他属性用payload的内容替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:34:51