utils新增一个判断字符串是否存在的方法
This commit is contained in:
@@ -433,4 +433,46 @@ export function isJsonArrayString(str) {
|
||||
// 解析失败(普通字符串/非法 JSON)→ 返回 false
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断目标值是否包含指定字符串
|
||||
* @param {string|number|array} target - 目标值(字符串/数字/数组)
|
||||
* @param {string} searchStr - 要查找的子字符串
|
||||
* @param {object} [options] - 可选配置
|
||||
* @param {boolean} [options.ignoreCase=false] - 是否忽略大小写
|
||||
* @param {boolean} [options.allowEmpty=false] - 当 searchStr 为空时,是否返回 true(默认 false)
|
||||
* @returns {boolean} 是否包含指定字符串
|
||||
*/
|
||||
export function includesString(target, searchStr, options = {}) {
|
||||
// 解构配置,设置默认值
|
||||
const {
|
||||
ignoreCase = false, allowEmpty = false
|
||||
} = options;
|
||||
|
||||
// 1. 处理 searchStr 为空的情况
|
||||
if (searchStr === '' || searchStr === null || searchStr === undefined) {
|
||||
return allowEmpty;
|
||||
}
|
||||
|
||||
// 2. 统一将目标值转为字符串(兼容数字/数组等)
|
||||
let targetStr = '';
|
||||
if (typeof target === 'string') {
|
||||
targetStr = target;
|
||||
} else if (typeof target === 'number') {
|
||||
targetStr = String(target);
|
||||
} else if (Array.isArray(target)) {
|
||||
// 数组:拼接为字符串(也可改为 "数组中某一项包含",根据需求调整)
|
||||
targetStr = target.join(',');
|
||||
} else {
|
||||
// 其他类型(对象/布尔等):转为字符串或返回 false
|
||||
targetStr = String(target);
|
||||
}
|
||||
|
||||
// 3. 处理大小写忽略
|
||||
const processedTarget = ignoreCase ? targetStr.toLowerCase() : targetStr;
|
||||
const processedSearch = ignoreCase ? searchStr.toLowerCase() : searchStr;
|
||||
|
||||
// 4. 执行包含判断
|
||||
return processedTarget.includes(processedSearch);
|
||||
}
|
||||
Reference in New Issue
Block a user