jQuery中如何用单行代码判断变量是否匹配多个指定值?
正确实现jQuery环境下多值匹配的单行判断方法
嘿,我懂你遇到的问题啦——你原来写的if(table_block_id == ('customer_details' || 'billing_details' || 'shipping_details'))其实是个常见误区!因为逻辑或||在这里只会返回第一个“真值”,也就是'customer_details',所以你的条件实际上就等价于table_block_id == 'customer_details',完全没实现同时判断多个值的效果。
下面给你几种单行实现多值判断的正确方法,按需选用:
方法1:使用数组的includes()方法(推荐)
这是ES6+的语法,代码简洁易读,jQuery环境下只要浏览器支持ES6或者你引入了polyfill就能用:
if (['customer_details', 'billing_details', 'shipping_details'].includes(table_block_id)) { // 这里写你的逻辑代码 }
includes()会直接返回布尔值,匹配到数组里的任意值就返回true,非常直观,后续要新增判断值也只要往数组里加就行,维护起来很方便。
方法2:使用数组的indexOf()方法(兼容老浏览器)
如果需要兼容IE这类不支持includes()的老浏览器,可以用indexOf():
if (['customer_details', 'billing_details', 'shipping_details'].indexOf(table_block_id) !== -1) { // 这里写你的逻辑代码 }
indexOf()会返回匹配元素的索引,没找到目标值就返回-1,所以判断索引不等于-1就代表匹配成功。
方法3:展开逻辑或条件(最基础的单行写法)
如果你不想用数组,也可以把每个判断项都写全,虽然代码长一点,但逻辑最直接:
if (table_block_id === 'customer_details' || table_block_id === 'billing_details' || table_block_id === 'shipping_details') { // 这里写你的逻辑代码 }
这里建议用===严格相等运算符,比==更安全,能避免隐式类型转换带来的意外问题。
内容的提问来源于stack exchange,提问作者melvin
相关产品推荐
相关产品推荐

