You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript多条件合并:如何简化重复等值检查代码?

精简多值判断的正确姿势

嘿,这个问题一点都不浅显——很多刚开始写JS的同学都会踩这种逻辑运算符的坑,太正常了!先给你拆解一下问题,再给你靠谱的精简方案:

为什么你的尝试写法有问题?

你写的:

if (this.myVeryLongName.aRandomProperty === ('property_1' || 'property_1' || 'property_1')) { 
  //do something 
}

这里的('property_1' || 'property_1' || 'property_1')其实只会返回第一个为真的表达式,也就是第一个'property_1',所以这段代码等价于:

if (this.myVeryLongName.aRandomProperty === 'property_1') { 
  //do something 
}

刚好你三个值都是property_1,功能暂时没差,但如果以后要判断不同的值(比如property_1、property_2、property_3),这种写法就完全失效了,逻辑会出错。

保持功能不变的精简写法

方案1:用数组includes方法(最直观推荐)

把要判断的所有值放进数组,然后用includes方法检查属性值是否在数组里:

if (['property_1', 'property_1', 'property_1'].includes(this.myVeryLongName.aRandomProperty)) {
  // do something
}

如果以后要加不同的判断值,直接往数组里加就行,可读性超高。

方案2:先把长属性存为变量(适合属性名特别长的场景)

如果this.myVeryLongName.aRandomProperty这个写法重复写太麻烦,可以先把它赋值给一个短变量,再做判断:

const targetProp = this.myVeryLongName.aRandomProperty;
if (targetProp === 'property_1' || targetProp === 'property_1' || targetProp === 'property_1') {
  // do something
}

也可以结合includes进一步精简:

const targetProp = this.myVeryLongName.aRandomProperty;
if (['property_1', 'property_1', 'property_1'].includes(targetProp)) {
  // do something
}

另外猜你可能是笔误把三个判断值写成一样的了?如果实际是不同的值(比如property_1、property_2、property_3),上面的方案完全适用,只要把数组里的元素换成对应的值就好~

内容的提问来源于stack exchange,提问作者Leo Messi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:30:16