如何修正代码实现将嵌套对象的color属性移至父对象?
问题分析与修正
你的代码存在两个关键错误:
- 错误地给字符串类型的
key添加color属性,但key只是对象的键名(比如"a"、"b"),并非需要修改的目标对象 - 尝试访问不存在的
value.color,color实际嵌套在value.model层级下
修正后的代码
Object.entries(container).forEach(([key, value]) => { // 从model中取出color,挂载到当前对象层级 value.color = value.model.color; // 删除多余的model属性 delete value.model; });
代码说明
value对应container中的每个子对象(如container.a、container.b),直接给它添加color属性,值取自value.model.color- 执行
delete value.model后,就能得到你期望的结构
可选:不修改原对象的纯函数写法
如果不想改动原container对象,推荐用纯函数方式生成新对象:
const transformedContainer = Object.fromEntries( Object.entries(container).map(([key, { model, availability }]) => [ key, { color: model.color, availability } ]) );
这种方式不会修改原数据,返回一个全新的转换后对象,更符合函数式编程规范。
内容的提问来源于stack exchange,提问作者AbreQueVoy
相关产品推荐
相关产品推荐

