如何将正则表达式加入忽略消息数组优化错误判断逻辑?
优化方案:将正则整合到忽略消息数组
问题分析
原代码的逻辑存在偏差:当前条件!ignoreMessages.includes(error?.message) || !(regexMessage.test(error?.message))会导致只有当消息同时在忽略数组且匹配正则时,才不返回'Different error',这和你“三类消息均为可忽略”的需求不符。正确逻辑应该是:只要消息在忽略数组,或者匹配正则,就忽略;否则返回'Different error'。
优化实现
我们可以把字符串和正则统一放到ignoreMessages数组中,通过遍历数组判断是否匹配:
// 混合包含字符串和正则的忽略列表 const ignoreMessages = [ `a`, `b 'more'`, /Loading page [\d]+ down/ ]; // 判断是否为可忽略错误 const shouldIgnore = ignoreMessages.some(item => { const message = error?.message; if (!message) return false; // 区分字符串和正则的匹配逻辑 return typeof item === 'string' ? item === message // 和原代码逻辑一致:消息严格等于数组中的字符串项 : item.test(message); }); // 正确逻辑:不可忽略时返回提示 if (!shouldIgnore) { return 'Different error'; }
说明
- 用
Array.some()遍历忽略列表,只要有一项匹配就判定为可忽略 - 通过
typeof区分字符串和正则,分别使用严格相等和正则测试进行匹配 - 修正了原代码的逻辑错误,确保三类消息都能被正确忽略
内容的提问来源于stack exchange,提问作者dev
相关产品推荐
相关产品推荐

