From b2cbbfda62113f5464778533a1726b82243b7f70 Mon Sep 17 00:00:00 2001 From: gyq <875626088@qq.com> Date: Thu, 11 Dec 2025 19:26:38 +0800 Subject: [PATCH] =?UTF-8?q?utils=E6=96=B0=E5=A2=9E=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E5=AD=97=E7=AC=A6=E4=B8=B2=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/util.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/utils/util.js b/utils/util.js index e8b6268..ac85718 100644 --- a/utils/util.js +++ b/utils/util.js @@ -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); } \ No newline at end of file