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

能否在复制对象数组的同时为其对象添加自定义属性?

如何一步完成数组赋值同时为对象添加属性?

假设有如下对象数组:

const myArr = [
    {name: 'one'},
    {name: 'two'}
];

你当前的两步实现代码:

const copyArr = myArr;
copyArr.forEach(obj => obj.newProp = 'some-new-prop');

执行后结果为:

[
    {name: 'one', newProp: 'some-new-prop'},
    {name: 'two', newProp: 'some-new-prop'}
]

可以一步完成,分两种场景处理:

场景1:直接修改原数组对象(和两步效果完全一致)

利用逗号运算符将属性修改操作和数组赋值合并成一行:

const copyArr = (myArr.forEach(obj => obj.newProp = 'some-new-prop'), myArr);

逗号运算符会先执行forEach给每个对象添加属性,再把原数组的引用赋值给copyArr,最终copyArr和myArr指向同一个数组,原对象也会被修改。

场景2:生成新数组和新对象(不修改原数据)

如果不想影响原数组和原对象,推荐用map方法创建全新数组,同时生成带新属性的对象浅拷贝:

const copyArr = myArr.map(obj => ({ ...obj, newProp: 'some-new-prop' }));

执行后原myArr保持不变,copyArr是独立的新数组,每个对象都是原对象的副本并新增了newProp属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:26:27