使用ES6解构简化javascript对象创建

时间:2018-08-29 11:10:48

标签: javascript ecmascript-6 destructuring

有没有一种方法可以通过使用结构分解来简化用户对象的更新,因为我有一个旧对象,并且想要更新为具有相同名称的新对象。

我想使用相同的用户对象并更新值,而不是创建新对象。

function UpdateUserProps(user, updatedUser) {
    const { email, status } = updatedUser;
    user.email = email;
    user.status = status;
    return user;
}

2 个答案:

答案 0 :(得分:4)

您可以在对象中使用扩展语法...。这将创建一个新对象。

function UpdateUserProps(user, updatedUser) {
  return {...user, ...updatedUser}
}

您还可以使用参数解构从更新对象中获取特定属性。

function UpdateUserProps(user, {email, status}) {
  return {...user, ...{email, status}}
}

let user = {
  name: "foo",
  email: "foo",
  status: true
}

console.log(UpdateUserProps(user, {
  email: "bar",
  status: false
}))

答案 1 :(得分:2)

使用Object.assign

function updateUserProps(user, updatedUser) {
 return Object.assign({}, user, updatedUser);
}

如果要在同一用户对象中更新

function updateUserProps(user, updatedUser) {
 return Object.assign(user, updatedUser);
}