在 JavaScript 中更新对象属性的更短方法?

问题描述 投票:0回答:2

我有一个关于不同问题的用户提交列表,每当更新时,我都会更新几个属性。我想知道是否有更好的方法,也许通过破坏或传播来使这个更干净/更短?这就是我目前正在做的事情,我减少了示例中的属性数量,但在实际项目中,我将大约 5-6 个属性一一更新,我觉得设置一个有点重复一个。

updateSubmission ( id, type, value ) {
  const obj = state.submission.filter( el => el.id === id )[ 0 ]
  obj.type = type
  obj.value = value
}
javascript ecmascript-6 javascript-objects
2个回答
3
投票

使用

.find
代替
.filter
来查找单个匹配对象,然后您可以使用简写
Object.assign
两个属性:

updateSubmission ( id, type, value ) {
  Object.assign(
    state.submission.find( el => el.id === id ),
    { type, value }
  );
}

1
投票

如果您可以更改

updateSubmission
的签名,那么您还可以使代码更加通用。

updateSubmission ({ id, ...rest }) {
  let obj = state.submission.find( el => el.id === id );
  obj = { ...obj, ...rest };
}

用途:

updateSubmission({id:'123', type:'abc', value:'xyz'})

未来的好处:

  1. 如果明天参数的顺序发生变化?那么代码就可以在不改变签名的情况下工作。
  2. 无论您之前有多少参数,通过对象解构,代码都可以在不向签名添加参数的情况下工作。
© www.soinside.com 2019 - 2024. All rights reserved.