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

Shorter way to update object properties in JavaScript?

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

updateSubmission ( id, type, value ) {
  const obj = state.submission.filter( el => el.id === id )[ 0 ]
  obj.type = type
  obj.value = value
}

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

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

如果您可以更改 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. 无论您之前有多少参数,通过对象解构,代码都可以在不向签名添加参数的情况下运行。