如何在不修改状态的情况下将JSON对象的数组属性转为Hobby模型?
不修改原对象的前提下转换Hobbies为Hobby模型实现方案
前提说明
先修正你给出的student对象为合法的JavaScript对象格式(原示例缺少字符串引号):
const student = { id: 1, name: 'jon', hobbies: ['running', 'basketball', 'soccer'] };
假设Hobby是一个类/构造函数,示例如下:
class Hobby { constructor(name) { this.name = name; // 可添加Hobby模型的其他属性或逻辑 } }
核心实现
要做到不修改原student对象的状态,我们需要创建一个全新的对象,复制原对象的所有属性,同时将hobbies替换为转换后的实例数组:
// 生成包含Hobby模型的新对象,原student完全不受影响 const studentWithHobbyInstances = { ...student, // 展开复制原对象的所有属性 hobbies: student.hobbies.map(hobbyName => new Hobby(hobbyName)) };
关键逻辑解释
- 使用对象展开运算符
...复制原对象的所有属性,确保原对象的引用和内部数据都不会被修改。 - 数组的
map方法会返回一个全新的数组,每个元素都是通过new Hobby()创建的实例,原student.hobbies数组保持不变。 - 最终
student对象的状态完全保留,新对象studentWithHobbyInstances拥有转换后的Hobby模型数组。
内容的提问来源于stack exchange,提问作者aj soprano
相关产品推荐
相关产品推荐

