如何实现动态条件判断?基于fieldName动态赋值media系列属性
问题描述
已知fieldName是一个动态变量,取值仅为media、media2或media3,如何替换以下冗余的多分支判断代码,实现动态将json.media赋值给对应属性?
原冗余代码:
if(fieldName === 'media') { const newObj = { ...objComponent, media: json.media }; } if(fieldName === 'media2') { const newObj = { ...objComponent, media2: json.media }; } else { const newObj = { ...objComponent, media3: json.media }; }
简化实现
利用JavaScript的对象字面量动态属性名特性,一行代码即可完成需求,彻底消除冗余分支:
const newObj = { ...objComponent, [fieldName]: json.media };
关键说明
- 用方括号
[]包裹fieldName,即可将其作为对象的动态属性名,自动匹配media/media2/media3三种取值 - 扩展运算符
...会保留objComponent的原有所有属性,同时将指定fieldName对应的属性值设置为json.media - 这种写法不仅简洁高效,后续若
fieldName的取值范围扩展,也无需修改代码,可维护性更强
内容的提问来源于stack exchange,提问作者Brian Millot
相关产品推荐
相关产品推荐

