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

如何更新数组内对象属性且不将原数组转换为对象?

解决数组元素属性更新后保持数组类型的问题

你之所以会得到对象而非数组,是因为错误地把数组当成普通对象用展开语法处理了——直接{...sections}会把数组的索引转为对象的键,最终生成一个普通对象,而非数组。下面给两种靠谱的解决方法:

方法一:用map遍历生成新数组

这是处理不可变数据更新的常用方式,遍历数组时仅修改目标索引的元素:

const updatedSections = form[id].values.sections.map((section, idx) => 
  idx === 0 ? { ...section, body: '你的新body内容' } : section
);

方法二:先拷贝数组再更新指定元素

先通过数组展开语法浅拷贝原数组,再替换目标索引的对象(同样用对象展开保留其他属性):

const originalSections = form[id].values.sections;
const updatedSections = [...originalSections];
// 更新索引0的body属性,同时保留attachments等其他属性
updatedSections[0] = { ...updatedSections[0], body: '你的新body内容' };

两种方法都能保证updatedSections始终是数组类型,且不会修改原数组(如果需要原地修改可以直接操作原数组,但通常推荐不可变更新的方式)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:25:38