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

如何基于现有对象创建含原键与嵌套对象指定值的新对象

提取嵌套对象指定键值生成新对象

现有如下对象:

let Object1 = { id1: { date: '23-01-2023', status: 'completed' }, id2: { date: '02-01-2023', status: 'pending' } }

需要创建新对象,保留原对象所有键,值为嵌套对象中status键对应的值,示例结果:

let Object2 = { id1: 'completed', id2: 'pending' }

下面是几种常用的实现方式:

方法1:Object.entries() + Array.reduce()

函数式风格的简洁写法,通过数组方法构建新对象:

const Object2 = Object.entries(Object1).reduce((acc, [key, value]) => {
  acc[key] = value.status;
  return acc;
}, {});

Object.entries(Object1)将原对象转换为键值对数组,reduce遍历数组并将每个键与对应的status值存入累加器,最终返回目标对象。

方法2:for...in循环

命令式写法,适合需要更直观控制遍历过程的场景:

const Object2 = {};
for (const key in Object1) {
  if (Object1.hasOwnProperty(key)) {
    Object2[key] = Object1[key].status;
  }
}

添加hasOwnProperty判断是为了避免遍历到原型链上的继承属性,确保只处理原对象自身的键。

方法3:Object.fromEntries()

ES2019及以上版本支持的方法,写法更简洁:

const Object2 = Object.fromEntries(
  Object.entries(Object1).map(([key, value]) => [key, value.status])
);

先将原对象转为键值对数组,用map把每个值替换为嵌套对象的status,最后通过Object.fromEntries将数组转回对象。

内容的提问来源于stack exchange,提问作者Daniel Corona

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:51:00