[英]How do I validate that each first letter in a name is in capital letters?
我有一個用戶輸入她/他的名字和姓氏的輸入。 我需要驗證名字和第二個名字是否都以大寫字母開頭。 還需要處理兩個以上的名字。
我在我的驗證對象中嘗試過這個。 我意識到我在映射時為每個元素得到了一個 if,不知道如何正確地寫這個。
nameCheck(value){
let name = value.split(" ");
name?.map(element => {
if(name?.length > 0 && element[0] === element[0].toUpperCase()){
return true
}
else{
return false
}
}
)
}
我這樣稱呼它:
const isValidName = validate.nameCheck(form.creator)
console.log(isValidName)
這里 isValidName 最終未定義。 我所有的其他驗證檢查都是簡單的 if 語句,效果很好。
知道如何解決這個問題嗎?
您沒有從方法nameCheck
返回任何內容; 但是您在這里使用的是map
,如果您返回map
返回的值,那么它將返回一個布爾值數組。
const validate = { nameCheck(value) { let name = value.split(" "); return name?.map((element) => { // change, Added return keyword if (name?.length > 0 && element[0] === element[0].toUpperCase()) { return true; } else { return false; } }); }, }; const isValidName = validate.nameCheck("Test user"); console.log(isValidName); const isValidName2 = validate.nameCheck("Test User"); console.log(isValidName2);
我不認為你想return an array
; 您只想return a Boolean value
來說明名稱是否有效。
所以,你可以使用every
在這里為:
const validate = { nameCheck(value) { return value.split(" ").every((s) => s[0].toUpperCase() === s[0]); }, }; const isValidName = validate.nameCheck("Test user"); console.log(isValidName); const isValidName2 = validate.nameCheck("Test User"); console.log(isValidName2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.