3 回答

TA贡献1111条经验 获得超0个赞
虽然丑陋而且有点重复,但你可以做到
({x: oof.x, y: oof.y} = foo);
它将读取foo
对象的两个值,并将它们写入oof
对象上各自的位置。
就我个人而言,我还是会读
oof.x = foo.x;oof.y = foo.y;
要么
['x', 'y'].forEach(prop => oof[prop] = foo[prop]);
虽然。

TA贡献1804条经验 获得超8个赞
不,解构不支持shorthands中的成员表达式,但是当前时只支持普通的属性名。目前已经谈关于这样的esdiscuss,但不建议将它做成ES6。
Object.assign
然而,您可以使用- 如果您不需要所有属性,您仍然可以使用
var foo = …, oof = {};{ let {x, y} = foo; Object.assign(oof, {x, y})}

TA贡献1815条经验 获得超6个赞
IMO这是完成您所需要的最简单的方法:
let { prop1, prop2, prop3 } = someObject;
let data = { prop1, prop2, prop3 };
// data === { prop1: someObject.prop1, ... }
基本上,解构为变量然后使用初始化程序简写来创建一个新对象。没必要Object.assign
无论如何,我认为这是最可读的方式。您可以在此选择someObject您想要的精确道具。如果你有一个现有的对象,你只想将道具合并到,做这样的事情:
let { prop1, prop2, prop3 } = someObject;
let data = Object.assign(otherObject, { prop1, prop2, prop3 });
// Makes a new copy, or...
Object.assign(otherObject, { prop1, prop2, prop3 });
// Merges into otherObject
另一种可以说更清晰的写作方式是:
let { prop1, prop2, prop3 } = someObject;
let newObject = { prop1, prop2, prop3 };
// Merges your selected props into otherObject
Object.assign(otherObject, newObject);
我将此用于POST请求很多,我只需要一些离散数据。但是,我同意应该有一个班轮来做这件事。
添加回答
举报