在React JS中如何检测数组是否包含指定字符串?
核心问题及修正方案
问题1:常量声明错误
你使用const声明了docId,const用于声明不可二次赋值的常量,后续修改docId的值会抛出语法错误,需要改为let声明。
问题2:数组包含判断逻辑错误
JS数组判断是否包含指定元素需要调用Array.includes()方法,你当前直接访问.contains属性并和字符串做相等判断的写法完全不生效。
修正后代码
const register = (e) => { e.preventDefault(); let id = Math.floor(Math.random() * (99999 + 1)); console.log(grado) // 修改为let声明支持二次赋值 let docId = "fail2"; // 用Array.includes判断数组中是否存在目标值 if (grado.includes("Prekínder-3") || grado.includes("Prekínder") || grado.includes("Kínder")){ docId = `PE-${id}`; } // 其余不相关代码省略 }
补充说明
如果你的多选下拉返回的grado是对象数组(即选项配置为{label: '展示文本', value: '存储值'}的格式),需要通过Array.some()方法遍历判断:
// 判断选中的选项中是否存在符合要求的年级 const hasTargetGrade = grado.some(item => { const val = item.value; return val === "Prekínder-3" || val === "Prekínder" || val === "Kínder" }) if (hasTargetGrade) { docId = `PE-${id}` }
如果需要模糊匹配任意带kínder关键字的选项,可以调整判断逻辑为:
const hasTargetGrade = grado.some(item => { // 转小写后判断包含,避免大小写匹配问题 return item.value.toLowerCase().includes('kínder') })
内容的提问来源于stack exchange,提问作者React Enjoyer
相关产品推荐
相关产品推荐

