是否存在将对象属性的子集复制到新对象的ES6简写?

max*_*son 1 javascript destructuring ecmascript-6

考虑以下对象:

const obj = {a: 1, b: 2, c: 3, d: 4, e: 5}
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的语法来创建包含以下内容的新对象:

const obj2 = {a, b, d}
Run Code Online (Sandbox Code Playgroud)

我知道有下划线和lodash .pick(),但我希望有一些我可能不知道的解构技巧.

Est*_*ask 7

ES2015中的简洁单行是

const obj2 = (({a, b, d}) => ({a, b, d}))(obj);
Run Code Online (Sandbox Code Playgroud)

似乎不可能在{a, b, d}同时保持紧凑的同时避免重言式.


Ori*_*iol 5

您可以分两步完成:

const obj = {a: 1, b: 2, c: 3, d: 4, e: 5};
var {a, b, d} = obj;
const obj2 = {a, b, d};
Run Code Online (Sandbox Code Playgroud)

如果你不想污染范围,

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});
}
Run Code Online (Sandbox Code Playgroud)