如何更简洁地编写这段JavaScript if条件判断语句?
原写法失效原因
你第一版代码的调用逻辑写反了:['mobile-number', 'name', 'about'].includes(stages)的作用是判断stages这个变量是否严格等于数组中的某一个元素,而你的需求是判断stages数组中是否存在三个指定值的任意一个,二者逻辑完全不同。
最简优化写法
用数组的some方法实现,只要任意一个值匹配就返回true,逻辑和你写的多||判断完全等价:
if (['mobile-number', 'name', 'about'].some(key => stages.includes(key))) { array.push('about-you') }
高频复用场景优化
如果需要校验的字段非常多、或者这段判断逻辑会多次调用,可以用Set优化查找性能,同时抽成独立函数提升语义化:
// 提前定义要校验的阶段集合,查找性能为O(1),远高于数组的O(n) const TARGET_STAGES = new Set(['mobile-number', 'name', 'about']) const hasValidStage = (stageList) => stageList.some(stage => TARGET_STAGES.has(stage)) // 业务代码直接调用 if (hasValidStage(stages)) { array.push('about-you') }
内容的提问来源于stack exchange,提问作者unicorn_surprise
相关产品推荐
相关产品推荐

