例如,如果我有两个对象:
var foo = { x: "bar", y: "baz" }
和
var oof = {}
我想将x和y值从foo转移到oof。有没有办法使用es6解构语法来做到这一点?
也许像这样:
oof{x,y} = foo
查看更多
虽然丑陋且有点重复,但您可以
({x: oof.x, y: oof.y} = foo);
它将读取foo对象的两个值,并将它们写入对象上它们各自的位置oof。
foo
oof
就个人而言,我还是想读
oof.x = foo.x; oof.y = foo.y;
要么
['x', 'y'].forEach(prop => oof[prop] = foo[prop]);
虽然。
备选['x','y']。forEach(prop => oof [prop] = foo [prop]); 如我所见,是迄今为止唯一的一种DRY(请勿重复)。在要映射多个键的情况下,“ DRY”确实有用。您只需要更新一个地方。也许我错了。不管怎么说,还是要谢谢你!
第三个示例是DRY,但是您必须使用字符串作为键,而javascript通常会隐式地执行此操作。不相信这比下面的小麻烦:const {x,y} = foo; const oof = {x,y};
有人可以在jsfiddle中向我展示第一个建议的作用吗?在chrome上无法正常使用:jsfiddle.net/7mh399ow
@ techguy2000您忘记了分号
var oof = {};
。在第一个代码中,不应为
({x: oof.x, y: oof.y} = foo)
?我认为您已经在oof中增加了f。