如何在给定示例的对象中添加值为指定字符串的属性
实现方案
你需要的是给对象中list数组内的元素新增type属性,固定值为'created',根据是否需要保留原始数据,可选择以下两种实现:
直接修改原数据(性能最优,无额外内存开销)
如果不需要保留原始数据的状态,直接遍历数组给元素追加属性即可,时间复杂度O(n),没有额外性能损耗:
// 原始数据 const data = { id: "222", list: [ { name: "Tony" } ] }; // 遍历list数组追加属性 data.list.forEach(item => { item.type = 'created'; });
执行后data的结构和你预期的结果完全一致。
生成新数据(不修改原对象,避免副作用)
如果后续逻辑还要用到原始数据、不希望原对象被改动,可以先对原数据做深拷贝,再给拷贝后的对象追加属性:
// 现代环境(Chrome 98+、Node.js 17+)推荐用内置API做深拷贝 const newData = structuredClone(data); newData.list.forEach(item => { item.type = 'created'; }); // 低版本兼容方案:仅适用于数据全是JSON支持的类型(无函数、Symbol、循环引用)的场景 const compatibleNewData = JSON.parse(JSON.stringify(data)); compatibleNewData.list.forEach(item => { item.type = 'created'; });
边界情况兼容
如果list可能为空、或者存在非对象元素,可以加可选链和类型判断避免运行时报错:
data.list?.forEach(item => { if (item && typeof item === 'object') { item.type = 'created'; } });
内容的提问来源于stack exchange,提问作者user18241178
相关产品推荐
相关产品推荐

