React.js中如何判断additionalDataProperties是否存在Duration键
解决方案
你使用的是Immutable.js的Map结构,判断指定键是否存在可以直接调用Map原生的has()方法,无需转成普通对象,性能和可读性都更好。
场景1:在原有过滤逻辑中新增存在性判断
如果你需要先判断Duration键存在,再执行原有ID匹配逻辑,修改后代码如下:
users = this.props.Users.filter(u => { // 判断additionalDataProperties中是否存在Duration键 const hasDurationKey = u.additionalDataProperties.has(USER_ADDITIONAL_PROPERTY_KEYS.Duration); // 仅存在键时才执行后续匹配逻辑,不存在的用户直接过滤 return hasDurationKey && u.additionalDataProperties.get(USER_ADDITIONAL_PROPERTY_KEYS.Duration) .some(durationId => durationId === this.props.durationFilterId); });
场景2:单独的if条件判断
如果仅需要做存在性判断,单独的if语句写法如下:
if (u.additionalDataProperties.has(USER_ADDITIONAL_PROPERTY_KEYS.Duration)) { // 存在Duration键时的业务逻辑 }
注意事项
- 你提供的现有代码中字段名为
additionalProperties,但给出的数据结构中字段名为additionalDataProperties,请注意核对字段名避免判断失效 - 如果一定要转成普通对象后判断,可使用JS原生
Object.hasOwn()方法,写法如下:const propsObj = u.additionalDataProperties.toObject(); const hasDurationKey = Object.hasOwn(propsObj, USER_ADDITIONAL_PROPERTY_KEYS.Duration);
内容的提问来源于stack exchange,提问作者user2110357
相关产品推荐
相关产品推荐

