isRangeIn
isRangeIn方法用于判断一个数值是否落在指定的区间内。支持多种区间表达格式:纯数字相等判断、中括号开闭区间、小括号闭区间、花括号枚举匹配、位运算等。
语法
javascript
isRangeIn(value, range)描述
isRangeIn 函数会根据 range 字符串的格式自动选择对应的判断策略。函数会按照以下优先级依次匹配:
- 纯数字:当
range是纯数字时,判断value是否与之相等 - 花括号枚举:
{1,2,3}格式,判断value是否在枚举列表中 - 位运算幂运算:
&pow后缀,判断value的二进制第 N 位是否为 1 - 位运算与:
&前缀,判断value & N是否非零 - 开闭区间:
[50,60]、(50,60)、[50,60)、(50,60]格式,判断value是否在区间内
对于开闭区间,方括号 [ ] 表示包含端点(闭区间),圆括号 ( ) 表示不包含端点(开区间)。端点留空表示无穷大,例如 [50,] 表示大于等于 50。
注意事项
value会被尝试转换为数字,无法转换时返回false并输出错误日志range为空时返回falsevalue为空(且不为 0)时返回falserange如果是数字类型会自动转为字符串处理- 位运算
&pow中的数字表示二进制位的位置(从 1 开始),如&pow3判断第 3 位是否为 1 - 位运算
&中的数字直接作为掩码进行与运算 - 区间格式必须包含逗号分隔符
- 当
value无法转换为数字时,会在控制台输出错误信息
示例
各种区间格式
位运算判断
浏览器兼容
isRangeIn 使用了基础 JavaScript API(字符串操作、数学运算等),在所有现代浏览器中均可使用,包括 IE9+。
性能考虑
- 时间复杂度: O(1) - 主要是字符串解析和数值比较操作
- 空间复杂度: O(1) - 仅使用常量额外空间
- 函数内部使用了正则表达式和字符串替换,但处理的字符串长度有限,性能开销可忽略
- 对于批量判断场景,建议预先解析区间格式,避免重复解析
相关函数
matchRules- 通用条件判断,可结合 isRangeIn 使用isType- 类型判断函数looseHas- 宽松包含判断