You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效移除嵌套对象的platform键并提升属性层级?

简洁实现嵌套对象属性提升(移除platform键)

核心需求

将原始对象中每个子项的platform嵌套对象属性提升到父层级,并移除platform键,替代传统for循环的实现方式。

实现方案

方案1:基础版(假设所有子项都有platform键)

利用Object.fromEntries + Object.entries + map的组合,一行核心代码完成转换:

const originalObj = {
  option1: {
    platform : {
      key1: 'value1',
      key2: 'value2',
      key3: 'value3'
    }
  },
  option2: {
    platform : {
      key1: 'value1',
      key2: 'value2',
      key3: 'value3'
    }
  },
  option3: {
    platform : {
      key1: 'value1',
      key2: 'value2',
      key3: 'value3'
    }
  }
};

// 转换逻辑
const transformedObj = Object.fromEntries(
  Object.entries(originalObj).map(([key, { platform }]) => [key, platform])
);

console.log(transformedObj);

原理:

  1. Object.entries(originalObj) 将原始对象转为[键, 值]的数组格式
  2. map遍历数组,解构每个子项的platform对象,返回新的[键, platform对象]数组
  3. Object.fromEntries 将处理后的键值对数组转回对象

方案2:兼容无platform键的场景

如果存在子项没有platform键的情况,可添加默认值避免解构报错:

const transformedObj = Object.fromEntries(
  Object.entries(originalObj).map(([key, { platform = {} }]) => [key, platform])
);

方案3:保留子项其他属性的场景

如果每个子项除了platform还有其他属性,可通过对象展开运算符合并属性:

// 假设有带额外属性的原始对象
const originalObjWithExtra = {
  option1: {
    extraKey: 'extraValue',
    platform : {
      key1: 'value1',
      key2: 'value2'
    }
  }
};

const transformedObj = Object.fromEntries(
  Object.entries(originalObjWithExtra).map(([key, { platform, ...rest }]) => [
    key,
    { ...rest, ...platform }
  ])
);
// 输出:{ option1: { extraKey: 'extraValue', key1: 'value1', key2: 'value2' } }

说明

这些实现基于JavaScript原生API,写法简洁优雅,性能上与for循环差异极小,但代码可读性和维护性更强,符合现代函数式编程风格。

内容的提问来源于stack exchange,提问作者Dharmik Soni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:50:23