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

ES6中如何将对象解构为仅含指定属性的新对象?

解决方法:从对象中提取指定属性构建新对象

我懂你的需求啦!你之前尝试的解构写法逻辑搞反了,咱们来看看几种简单又实用的实现方式:

方法1:分步解构+重构对象(最直观)

先从原对象里解构出需要的属性,再用这些属性创建新对象,可读性拉满:

const payload = { apple: 1, dog: 2, cat: 3 };
// 第一步:解构出需要的属性
const { apple, dog } = payload;
// 第二步:用解构出的属性构建新对象(ES6简写,等同于{ apple: apple, dog: dog })
const newPayload = { apple, dog };

方法2:一行式立即执行函数(简洁版)

如果想少写几行代码,可以用立即执行函数把解构和对象构建合并成一行:

const payload = { apple: 1, dog: 2, cat: 3 };
const newPayload = (({ apple, dog }) => ({ apple, dog }))(payload);

这里的逻辑是:把payload传入匿名函数,函数内部解构出apple和dog,然后直接返回由这两个属性组成的新对象。

方法3:通用工具函数(适合多次复用)

如果你的项目里经常需要从对象中提取指定属性,可以写一个通用的pick工具函数,方便重复调用:

// 定义工具函数:接收原对象和需要提取的属性名列表
const pick = (obj, ...keys) => 
  keys.reduce((result, key) => {
    // 把每个指定属性添加到结果对象中
    result[key] = obj[key];
    return result;
  }, {});

// 使用示例
const payload = { apple: 1, dog: 2, cat: 3 };
const newPayload = pick(payload, 'apple', 'dog');

为什么你之前的写法不对?

你写的const {{apple, dog} : newPayload} = payload是在尝试解构嵌套对象——它的逻辑是:从payload中找到一个属性,这个属性的值是包含apple和dog的对象,然后把这个对象赋值给newPayload。但你的payload里根本没有这样的嵌套属性,所以自然会出错啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:09:09