假设我有一个对象 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 的方法而不是属性列表。实际上,保留属性列表以进行显式映射是我的目标。
答案 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}