如何合并对象中两个动态嵌套键的取值并生成新对象?
解决方案
由于外层键和嵌套键都是动态的,核心思路是遍历原对象的所有内层子对象,将它们的键值对合并到一个新对象中。以下是两种简洁通用的实现方式:
方式一:Object.values + Object.assign
通过Object.values(query)获取所有内层子对象组成的数组,再用Object.assign将这些子对象合并为一个新对象:
const query = { item: { 'available': false }, status: { 'locked': true } }; const result = Object.assign({}, ...Object.values(query)); console.log(result); // { available: false, locked: true }
如果存在重复的嵌套键,后出现的子对象会覆盖前面的,这符合对象键的唯一性规则。
方式二:Array.prototype.reduce
用reduce遍历内层子对象,逐个将键值对添加到结果对象中,灵活性更强,可自定义重复键的处理逻辑:
const query = { item: { 'available': false }, status: { 'locked': true } }; const result = Object.values(query).reduce((acc, obj) => { // 可在此添加重复键的自定义处理逻辑,例如判断键是否已存在再决定是否覆盖 return { ...acc, ...obj }; }, {}); console.log(result); // { available: false, locked: true }
这两种方式完全不依赖固定键名,无论外层键(如item、status)或嵌套键(如available、locked)如何变化,都能正常完成提取合并。
内容的提问来源于stack exchange,提问作者Matt_crud
相关产品推荐
相关产品推荐

