Skip to content

isRangeIn

isRangeIn方法用于判断一个数值是否落在指定的区间内。支持多种区间表达格式:纯数字相等判断、中括号开闭区间、小括号闭区间、花括号枚举匹配、位运算等。

语法

javascript
isRangeIn(value, range)

描述

isRangeIn 函数会根据 range 字符串的格式自动选择对应的判断策略。函数会按照以下优先级依次匹配:

  1. 纯数字:当 range 是纯数字时,判断 value 是否与之相等
  2. 花括号枚举{1,2,3} 格式,判断 value 是否在枚举列表中
  3. 位运算幂运算&pow 后缀,判断 value 的二进制第 N 位是否为 1
  4. 位运算与& 前缀,判断 value & N 是否非零
  5. 开闭区间[50,60](50,60)[50,60)(50,60] 格式,判断 value 是否在区间内

对于开闭区间,方括号 [ ] 表示包含端点(闭区间),圆括号 ( ) 表示不包含端点(开区间)。端点留空表示无穷大,例如 [50,] 表示大于等于 50。

注意事项

  • value 会被尝试转换为数字,无法转换时返回 false 并输出错误日志
  • range 为空时返回 false
  • value 为空(且不为 0)时返回 false
  • range 如果是数字类型会自动转为字符串处理
  • 位运算 &pow 中的数字表示二进制位的位置(从 1 开始),如 &pow3 判断第 3 位是否为 1
  • 位运算 & 中的数字直接作为掩码进行与运算
  • 区间格式必须包含逗号分隔符
  • value 无法转换为数字时,会在控制台输出错误信息

示例

各种区间格式

位运算判断

浏览器兼容

isRangeIn 使用了基础 JavaScript API(字符串操作、数学运算等),在所有现代浏览器中均可使用,包括 IE9+。

性能考虑

  • 时间复杂度: O(1) - 主要是字符串解析和数值比较操作
  • 空间复杂度: O(1) - 仅使用常量额外空间
  • 函数内部使用了正则表达式和字符串替换,但处理的字符串长度有限,性能开销可忽略
  • 对于批量判断场景,建议预先解析区间格式,避免重复解析

相关函数