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

标签 javascript ecmascript-6 destructuring

假设我有一个对象foo,其属性为ab,但我想将这些属性的值传递给另一个对象bar 具有属性 xy 其中 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 而不是属性列表。事实上,为显式映射保留属性列表是我的目标。

最佳答案

解构赋值让你很容易做到这一点

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}

关于javascript - 在 ES6/ES2015 中,是否有更简洁的方法将一个对象的属性映射到另一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35471531/

相关文章:

jquery post 和 promise 的 Javascript 范围问题

javascript - Js html 导入/导出

css - 如何在 Drawer - Material UI 中将 MenuItem 设置为事件状态?

javascript - Webpack 没有给环境变量赋值

Javascript Array.prototype.filter 意外输出

javascript - 循环一个数组来替换 DIV 类

javascript - 为什么 let 在 for-of 规范中被挑出来?

lisp - 在解构绑定(bind)中声明未使用变量的任何好方法?

javascript - JS - 通过只选择你需要的来解构

javascript:获取函数中未破坏的参数