Javascript 是否存在用于复制对象子集的ES6速记';将属性添加到新对象中?

Javascript 是否存在用于复制对象子集的ES6速记';将属性添加到新对象中?,javascript,ecmascript-6,destructuring,Javascript,Ecmascript 6,Destructuring,考虑以下对象: const obj = {a: 1, b: 2, c: 3, d: 4, e: 5} 是否有简单的语法用于创建包含以下内容的新对象: const obj2 = {a, b, d} 我知道下划线和lodash有.pick(),但我希望有一些我可能不知道的解构技巧。您可以使用并创建这样的自定义pick函数 constobj={a:1,b:2,c:3,d:4,e:5} 函数拾取(对象,…p){ 返回p.reduce((o,e)=>{returno[e]=object[e],o},

考虑以下对象:

const obj = {a: 1, b: 2, c: 3, d: 4, e: 5}
是否有简单的语法用于创建包含以下内容的新对象:

const obj2 = {a, b, d}
我知道下划线和lodash有
.pick()
,但我希望有一些我可能不知道的解构技巧。

您可以使用并创建这样的自定义pick函数

constobj={a:1,b:2,c:3,d:4,e:5}
函数拾取(对象,…p){
返回p.reduce((o,e)=>{returno[e]=object[e],o},{});
}

log(选择(obj,'a','b','d'))
您可以通过两个步骤完成:

const obj = {a: 1, b: 2, c: 3, d: 4, e: 5};
var {a, b, d} = obj;
const obj2 = {a, b, d};
如果你不想污染范围

const obj = {a: 1, b: 2, c: 3, d: 4, e: 5};
const obj2 = {};
{
  let {a, b, d} = obj;
  Object.assign(obj2, {a, b, d});
}

ES2015中简洁的一行是

const obj2 = (({a, b, d}) => ({a, b, d}))(obj);

在保持紧凑的同时,似乎不可能避免重言式。

在ES6中,我想不出比旧方法更可读的东西了-
constobj2={a:obj.a,b:obj.b,d:obj.d}-虽然重复了这么多次obj也没那么好。哇,我对第一次使用ES2015结构感到非常兴奋,但它仍然没有我希望的那么优雅。哦,也许是未来的版本。谢谢@MichaelScheper这就是为什么Lodash
仍然适用的原因。这个问题的答案涵盖了一切。