在javascript中处理同一属性的多个赋值的最佳方法

use*_*246 5 javascript node.js ecmascript-5 ecmascript-6 ecmascript-7

情况就是这样:

user.username = body.username;
user.name = body.name;
user.surname = body.surname;
user.email = body.email;
user.password = body.password;
user.privilege = body.privilege;
user.pin = body.pin;
user.rfidTag = body.rfidTag;
Run Code Online (Sandbox Code Playgroud)

我这样修改它,它按预期工作:

for (let propt in body) { 
    user[propt] = body[propt];
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更优雅的方式来写这个,也许有一些属性检查.

[更新]:有多种方法可以解决这个问题.

如果您不需要保留用户属性:

user = Object.assign( {}, body );
Run Code Online (Sandbox Code Playgroud)

或者提案传播财产:

user = { ...body };
Run Code Online (Sandbox Code Playgroud)

否则保留用户的属性:

Object.assign( user, body );
Run Code Online (Sandbox Code Playgroud)

gur*_*372 5

您可以使用Object.assign

user = Object.assign( {}, body );
Run Code Online (Sandbox Code Playgroud)

演示

var body = { user : "abc", username : "some-value" };

var user = Object.assign( {}, body );

console.log( user );
Run Code Online (Sandbox Code Playgroud)

编辑

如果用户已经有一些你不想被删除的属性(不在体内)那么

Object.assign( user, body );
Run Code Online (Sandbox Code Playgroud)

  • @Rajesh你是对的.如果OP只想复制一些属性,那么问题可能会有所帮助/sf/ask/3359494841/ (3认同)