在ES6 / ES2015中是否有更简洁的方法将一个对象的属性映射到另一个对象?

时间:2016-02-18 02:12:27

标签: javascript ecmascript-6 destructuring

假设我有一个对象 foo ,其属性为 a b ,但我想将这些属性的值传输到另一个对象 bar ,其属性为 x y ,其中bar.x获取foo.a的值,bar.y获取值{ foo.b

使用ES5实现这一目标的第一种方式如下:

var foo = { a: 5, b: 17 };
var bar = { x: foo.a, y: foo.b };

这已经非常简洁,但是在每种情况下必须引用foo来访问它的属性会因为更大的属性映射而变得嘈杂。在ES6中查看新的解构功能时,似乎可以将嵌套对象解构为一组扁平变量,但我没有找到任何指出能够指定一个对象来解构属性值的能力。这个功能是不存在还是我没有找到显示如何完成此功能的示例?如果不可能有任何其他聪明的技巧可以做到以达到类似的结果?

要明确我希望能够按照以下示例的方式做一些事情。

var foo = { a: 5, b: 17 };
var bar = { a: x, b: y } = foo;

这个问题与(One-liner to take some properties from object in ES 6)不同,因为我正在寻找避免编写 foo 的方法而不是属性列表。实际上,保留属性列表以进行显式映射是我的目标。

1 个答案:

答案 0 :(得分:2)

解构分配可让您轻松完成此任务

let foo = {a: 5, b: 17, c: 10};
let {a,b,c} = foo;
let bar = {x: a, y: b, c};
console.log(bar);
// => {x:5, y:17, c:10}