javascript - 解构 JavaScript 对象时如何只选择几个字段?
问题描述
我似乎不记得如何写这个解构模式,你能帮我吗?
假设我有一个这样的对象:
{
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”这个词,写一次每个键名,并且不创建临时变量,但我不记得如何了。
我不是要写一个特定的函数,我不需要帮助。我只是在问是否有内置的解构语法来执行此操作,因为我很确定有但我找不到它,尽管之前搜索了很长时间。
编辑:
实际上,我正在寻找(如果存在)这种语法:
arr.push({id, object, amount, arrival_date, created} = myObject)
不幸的是,它不起作用,整个对象都被添加了。这接近正确了吗?
解决方案
我不确定您是否可以仅使用 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);
推荐阅读
- r - 使用一个表中的多个列和另一个表中的单个列更新值
- java - hashcode() 会为连接返回相同的哈希值吗?
- php - 使用另一个查询按变量排序?
- apache-spark - 如何从pysark中的文件中匹配/提取多行模式
- laravel - 如何使用 Composer 存储库进行 Laravel 框架开发
- python - 具有密集层的 TensorFlow 激活函数
- python - 连接来自同一物种名称的两个文件的 DNA 序列
- javascript - Styled Components / React - 外部元素的样式
- python - 如何禁用 TKinter 滚动条小部件?
- kubernetes - 如何使用 terraform 资源为 k8s (AKS) 颁发 letencrypt 证书?