【问题标题】:Simplify javascript object creation using ES6 destructuring使用 ES6 解构简化 javascript 对象创建
【发布时间】:2019-02-04 03:50:17
【问题描述】:

有没有办法使用解构来简化用户对象的更新,其中我有一个旧对象并且我想更新到具有相同属性名称的新对象。

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

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

【问题讨论】:

    标签: javascript ecmascript-6 destructuring


    【解决方案1】:

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

    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
    }))

    【讨论】:

    • 太棒了,如果我不想要 updatedUser 的所有属性,只想要匹配用户的属性,这可能吗?
    • 如果您想检查更新的每个属性是否存在于用户中,我认为您需要循环,但如果您知道要预先采用哪些属性,那么您可以使用参数解构jsfiddle.net/321vqep8/16跨度>
    【解决方案2】:

    您也可以使用Object.assign 来完成此操作而无需解构

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

    如果你想在同一个用户对象中更新

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 2021-11-16
      相关资源
      最近更新 更多