looseHas
looseHas方法用于判断 current(字符或字符数组)是否属于 root(字符数组),是一种宽松的包含判断。
语法
javascript
looseHas(root, current)描述
looseHas 函数用于判断 current 中的所有元素是否都被 root 包含。该函数对入参类型做了宽松处理:
root可以是数组或单个值,如果不是数组会被包装成数组current可以是字符串或数组,如果是字符串会被转换为单元素数组- 只有
current中的所有元素都在root中存在时,才返回true - 当
root或current为null/undefined时,直接返回false
这种"宽松"特性使得函数可以接受多种入参格式,而无需调用方预先进行类型转换。
注意事项
root和current为null或undefined时返回falsecurrent是字符串时会被当作单元素数组处理root不是数组时会被包装成单元素数组- 判断逻辑是"current 的所有元素都在 root 中",即 current 是 root 的子集
- 使用严格相等(
includes内部使用===)进行元素比较,不做类型转换 - 该函数依赖 ramda 的
isNil进行空值判断
示例
基本用法
宽松类型处理
浏览器兼容
looseHas 使用了基础 JavaScript API(Array.isArray、Array.prototype.includes 等),需要支持 ES7 的浏览器环境:
- Chrome 47+
- Firefox 43+
- Safari 9+
- Edge 14+
不支持 IE 浏览器(IE 不支持 Array.prototype.includes)。
性能考虑
- 时间复杂度: O(m × n) - 其中 m 是
current的长度,n 是root的长度(includes内部线性查找) - 空间复杂度: O(m + n) - 需要将入参规范化为数组
- 对于大规模数据,建议将
root转换为Set以提高查找效率 - 实际使用中数据量通常较小,性能开销可忽略
相关函数
matchRules- 通用条件判断,其中的in/hascondition 也有包含判断逻辑isType- 类型判断函数isRangeIn- 区间判断