javascript - 解构 JavaScript 对象时如何只选择几个字段?

标签 javascript ecmascript-6 destructuring

这个问题在这里已经有了答案:





One-liner to take some properties from object in ES 6

(11 个回答)


2年前关闭。




我似乎不记得如何写这个解构模式,你能帮我吗?
假设我有一个这样的对象:

{
  id: 'po_495743057439095',
  object: 'payout',
  amount: 18560,
  arrival_date: 1576195200,
  automatic: true,
  balance_transaction: 'txn_32472309478903284',
  created: 1575774863,
  currency: 'eur',
  description: 'STRIPE PAYOUT',
  destination: 'ba_329047329048323',
  failure_balance_transaction: null,
  failure_code: null,
  failure_message: null,
  livemode: true,
  metadata: {},
  method: 'standard',
  source_type: 'card',
  statement_descriptor: null,
  status: 'in_transit',
  type: 'bank_account',
}
(这实际上是 Stripe API 中的一个对象)。
我想将此对象推送到我的自定义数组中,但只保留 5 个字段。
我可以:
arr.push({
  id: myObject.id,
  object: myObject.object,
  amount: myObject.amount,
  arrival_date: myObject.arrival_date,
  created: myObject.created
})
但我想知道是否有任何语法可以帮助我以更短的方式实现相同的目标。
基本上我很确定有一种语法可以做到这一点,它只需要写一次“myObject”这个词,写一次每个键名,并且不创建临时变量,但我不记得如何了。
我不是要写一个特定的函数,我不需要帮助。我只是在问是否有内置的解构语法来执行此操作,因为我很确定有但我找不到它,尽管之前搜索了很长时间。
编辑:
我正在寻找的答案在这里:Elegant way to copy only a part of an object

最佳答案

我不确定您是否可以仅使用 es6 对象解构来做到这一点。但是你可以利用一些 es6 功能来实现 lodash 的 pick功能。

Object.assign(
  {},
  ...['id', 'object', 'amount', 'arrival_date', 'created'].map(key => ({
    [key]: myObject[key]
  }))
);

    const myObject = {
      id: 'po_495743057439095',
      object: 'payout',
      amount: 18560,
      arrival_date: 1576195200,
      automatic: true,
      balance_transaction: 'txn_32472309478903284',
      created: 1575774863,
      currency: 'eur',
      description: 'STRIPE PAYOUT',
      destination: 'ba_329047329048323',
      failure_balance_transaction: null,
      failure_code: null,
      failure_message: null,
      livemode: true,
      metadata: {},
      method: 'standard',
      source_type: 'card',
      statement_descriptor: null,
      status: 'in_transit',
      type: 'bank_account',
    };

    const newObject = Object.assign(
      {},
      ...['id', 'object', 'amount', 'arrival_date', 'created'].map(key => ({
        [key]: myObject[key]
      }))
    );
    console.log(newObject);

关于javascript - 解构 JavaScript 对象时如何只选择几个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59248512/

相关文章:

Javascript硬编码对象作为参数,但不引用全局对象

javascript - 使用 fetch() 在 React 中分页

javascript - 在两个不同或相同设备的不同网络浏览器中打开的两个 Controller 之间的通信

typescript - Typescript 中可选 Prop 的解构

Groovy 在列表上的不一致解构/分解?

javascript - ES6 解构具有相同属性名称的两个对象

javascript - 如何用 React Native 实现 Stripe?

javascript - 设置实用程序类并在 vue 组件中使用它

javascript - 填充字母数字数组元素之间的间隙

javascript - TypeScript ES6 导入模块 "File is not a module error"