Skip to content

looseHas

looseHas方法用于判断 current(字符或字符数组)是否属于 root(字符数组),是一种宽松的包含判断。

语法

javascript
looseHas(root, current)

描述

looseHas 函数用于判断 current 中的所有元素是否都被 root 包含。该函数对入参类型做了宽松处理:

  • root 可以是数组或单个值,如果不是数组会被包装成数组
  • current 可以是字符串或数组,如果是字符串会被转换为单元素数组
  • 只有 current 中的所有元素都在 root 中存在时,才返回 true
  • rootcurrentnull/undefined 时,直接返回 false

这种"宽松"特性使得函数可以接受多种入参格式,而无需调用方预先进行类型转换。

注意事项

  • rootcurrentnullundefined 时返回 false
  • current 是字符串时会被当作单元素数组处理
  • root 不是数组时会被包装成单元素数组
  • 判断逻辑是"current 的所有元素都在 root 中",即 current 是 root 的子集
  • 使用严格相等(includes 内部使用 ===)进行元素比较,不做类型转换
  • 该函数依赖 ramda 的 isNil 进行空值判断

示例

基本用法

宽松类型处理

浏览器兼容

looseHas 使用了基础 JavaScript API(Array.isArrayArray.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/has condition 也有包含判断逻辑
  • isType - 类型判断函数
  • isRangeIn - 区间判断