如何验证姓名中每个单词的首字母均为大写?
问题根因
- 你的
nameCheck函数没有显式声明返回值,执行完map逻辑后没有输出结果,所以调用后拿到的永远是undefined。 - 校验逻辑选型错误:
map方法的作用是遍历数组生成新数组,无法直接得到「所有姓名组成部分均符合规则」的布尔结果,适合该场景的是数组的every方法,只有所有元素都满足判断条件时才会返回true,否则返回false,刚好匹配你的校验需求。 - 缺少边界处理:没有适配空输入、输入内容含连续空格的场景,这类异常输入会直接导致代码报错。
修复后的完整代码
nameCheck(value){ // 前置拦截非法输入 if(!value || typeof value !== 'string') return false // 拆分姓名并过滤掉空内容(适配连续空格场景) const nameParts = value.split(" ").filter(part => part.trim().length > 0) // 校验所有姓名组成部分首字母大写 return nameParts.every(part => { return part[0] === part[0].toUpperCase() }) }
调用方式
原有调用逻辑不需要修改,直接运行即可得到正确的布尔校验结果:
const isValidName = validate.nameCheck(form.creator) console.log(isValidName)
内容的提问来源于stack exchange,提问作者Tore
相关产品推荐
相关产品推荐

