如何将对象中Results数组内的键值对迁移至原对象?
正确实现方案
需求回顾
需要将对象内Results数组中的所有键值对合并到原对象中,并移除Results属性。
问题分析
现有代码存在逻辑错误:
- 遍历
Results时将元素命名为key,但实际每个元素是对象而非键名 - 错误地尝试将值存入数组,不符合直接合并键值对的需求
- 属性访问逻辑混乱,导致无法正确提取
Results内的键值
实现代码
通用版(支持Results多对象合并,后对象键值覆盖前对象)
const mapOscarResults = ({ data }) => { return data.map(entry => { // 解构分离Results和其他属性 const { Results = [], ...rest } = entry; // 合并Results中所有对象的键值对到rest return Results.reduce((merged, resultItem) => ({ ...merged, ...resultItem }), rest); }); };
简化版(适用于Results仅含单个对象的场景)
const mapOscarResults = ({ data }) => { return data.map(entry => { const { Results = [], ...rest } = entry; // 直接取第一个结果对象合并 return { ...rest, ...Results[0] }; }); };
代码说明
- 解构赋值:将
entry拆分为Results数组和其余属性集合rest,避免修改原对象 - 合并逻辑:
- 通用版用
reduce遍历Results,逐个合并每个对象的键值对到rest - 简化版直接提取
Results第一个对象展开合并
- 通用版用
- 容错处理:给
Results设置默认空数组,避免entry无Results属性时报错
内容的提问来源于stack exchange,提问作者Na el
相关产品推荐
相关产品推荐

