如何编写一个函数,在ES6中以最紧凑的方式只占用少量属性?
我已经提出了使用解构+简化对象文字的解决方案,但我不喜欢在代码中重复的字段列表.
有更薄的解决方案吗?
(v) => {
let { id, title } = v;
return { id, title };
}
Run Code Online (Sandbox Code Playgroud) javascript destructuring ecmascript-harmony ecmascript-6 ecmascript-next
我有一个对象.我想通过删除除某些特定属性之外的所有属性来修改对象(而不是克隆它).例如,如果我开始使用此对象:
var myObj={
p1:123,
p2:321,
p3:{p3_1:1231,p3_2:342},
p4:'23423',
//....
p99:{p99_1:'sadf',p99_2:234},
p100:3434
}
Run Code Online (Sandbox Code Playgroud)
并且只想要属性p1,p2和p100,我该如何获得这个对象:
var myObj={
p1:123,
p2:321,
p100:3434
}
Run Code Online (Sandbox Code Playgroud)
我理解如何用蛮力做到这一点,但想要一个更优雅的解决方案.
我似乎不记得如何编写这个解构模式,你能帮我吗?
假设我有一个这样的对象:
{
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',
}
Run Code Online (Sandbox Code Playgroud)
(这实际上是来自 Stripe API 的一个对象)。
我想将这个对象推送到我的自定义数组中,但只保留 5 个字段。
我可以:
arr.push({
id: myObject.id,
object: myObject.object,
amount: myObject.amount,
arrival_date: myObject.arrival_date,
created: myObject.created
})
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有任何语法可以帮助我以更短的方式实现相同的目标。
基本上我很确定有一种语法可以做到这一点,只需要编写一次“myObject”一词,编写每个键名称一次,并且不创建临时变量,但我不记得如何实现。
我不是在询问编写特定的函数,我不需要帮助。我只是问是否有内置的解构语法可以做到这一点,因为我很确定有,但我找不到它,尽管之前搜索了相当长的时间。
编辑:
我正在寻找的答案就在这里:Elegant way to copy a part of an object
从具有特定属性(而不是全部)的另一个对象克隆一个对象的优化方法是什么?
如下所示,我们可以通过对象的投影来获取值:
let tempObject = {
prop1 : 'something',
prop2 : 'something' ,
other : 'others'
};
//then
let { prop1, prop2} = tempObject;
Run Code Online (Sandbox Code Playgroud)
同样,我想从另一个对象克隆一些属性,例如
let oldObject = {
p1 : 'something',
p2 : 'somethig',
p3 : 'something'
}
Run Code Online (Sandbox Code Playgroud)
想要从上面制作另一个oldObject仅具有p1 and p2这两个属性的对象。预计newObject将会{p1 : 'something', p2 : 'somethig'}。
我知道有很多方法可以做到这一点,但我想通过解释了解优化方法。