Javascript 如何从ES6中的对象匹配声明对象

Javascript 如何从ES6中的对象匹配声明对象,javascript,ecmascript-6,Javascript,Ecmascript 6,我的应用程序中有此代码 let {firstName, lastName, email, password} = req.body; var data = {firstName, lastName, email, password}; 如果可能的话,我想做什么来缩短它 var data = {firstName, lastName, email, password} = req.body; 这可能吗?您可以使用问题中的方法手动设置分配,或在目标中分配给对象 const body={fir

我的应用程序中有此代码

let {firstName, lastName, email, password} = req.body;

var data = {firstName, lastName, email, password};
如果可能的话,我想做什么来缩短它

var data = {firstName, lastName, email, password} = req.body;

这可能吗?

您可以使用问题中的方法手动设置分配,或在目标中分配给对象

const body={firstName:1,lastName:2,email:3,密码:4};
让数据={};
({
firstName:data.firstName,
lasName:data.lastName,
电子邮件:data.email,
密码:data.password
}=主体);

控制台日志(数据)如果您使用的是ES6+,则可以使用如下对象扩展语法:

const { ...data } = req.body;
如果没有,可以手动创建对象:

const { firstName, lastName, email, password } = req.body;
const data = {
   firstName: firstName,
   lastName: lastName,
   email: email,
   password: 
};
如果您有权访问,可以使用
lodash
提供的方法

var data = _.pick(req.body, ['firstName', 'lastName', 'email', 'password']);

您可以创建一个函数ES6邮件列表中已经讨论过这一点,该列表中的知名人士似乎一致认为,尽管此请求在堆栈溢出时至少出现了十几次,但引入新语法来处理它还不够普遍。因此,您的两行解决方案目前是在这里做事情的首选方式。为什么要使用
新对象
,而不仅仅是
{}
?而这实际上实现了什么?OPs问题有意义的唯一方法是,他是否想过滤
req.body`中的
s,因为这已经是一个对象,他不需要任何解构,只需要再次使其成为(相同的)对象。在第二段代码中键入
lasName
。与使用解构然后像往常一样生成对象相比,现在有没有更少的代码?(回答:没有)OP已经用两行简单的代码完成了。这里发布的所有“解决方案”都比OP已经得到的更复杂。@Mörre使用
新对象有什么问题?@Mörre“这里发布的所有“解决方案”都比OP已经得到的更复杂。“你考虑过将这句话作为答案发布吗?@Bergi和?实际上,这两个都是ES6解决方案都与ES6一起工作,但是,在ES6之前的环境中,形式化语法不起作用。在ES5上也不起作用。没有扩展运算符,它是扩展语法——但无论如何,您都在使用rest语法。对象的rest语法不是ES6的一部分
const data={…req.body}不同或更好,在任何情况下,这都不能解决OP想要属性子集的问题。