在 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'})
未来收益:
- 如果明天,参数的顺序改变了?然后代码在不更改签名的情况下工作。
- 无论您之前有多少参数,通过对象解构,代码都可以在不向签名添加参数的情况下运行。
我有一个用户提交的关于不同问题的列表,每当更新时,我都会更新几个属性。我想知道是否有更好的方法,也许是通过破坏或传播来制作这个 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'})
未来收益:
- 如果明天,参数的顺序改变了?然后代码在不更改签名的情况下工作。
- 无论您之前有多少参数,通过对象解构,代码都可以在不向签名添加参数的情况下运行。