尋找條件陳述句的替代方案。從我的代碼中可以看出,該程序過于重復且雜亂無章。隨著代碼規模的增長,維護代碼將變得越來越困難。為了避免這種情況,我正在尋找替代方案。
function validate(values) {
let errors = {};
// Email Error
if (!values.email) {
errors.email = "Email address is required";
} else if (!/\S @\S \.\S /.test(values.email)) {
errors.email = "Email address is invalid";
}
// Password Error
if (!values.password) {
errors.password = "Password is required";
} else if (values.password.length < 6) {
errors.password = "Password must be 6 or more characters";
}
return errors;
}
uj5u.com熱心網友回復:
您可以將一些邏輯移到配置中。嘗試協調檢查,使它們都依賴于正則運算式。因此,對于最小長度為 6 的情況,請/....../用作正則運算式。還要確保正則運算式不會接受空字串,以防該欄位被認為是必需的。
例如:
// All specifics are encoded here:
const checks = [
{ field: "email", regex: /^\S @\S \.\S $/, name: "Email address", msg: "must be 6 or more characters" },
{ field: "password", regex: /....../, name: "Password", msg: "is invalid" },
];
// ...while this is now (more) generic:
function validate(values) {
const errors = {};
for (const {field, regex, name, msg} of checks) {
if (!regex.test(values[field])) {
errors[field] = name " " (values[field] ? msg : "is required");
}
}
return errors;
}
uj5u.com熱心網友回復:
您可以使用訪問 js 物件中的列 myObject[nameOfYourColumn]
所以我們可以考慮構建一個這樣的通用方法
function validateColumn(object, columnName, format, errors) {
if (!object[columnName]) {
errors[columnName] = `${columnName} is required`;
} else if (!format.test(object[columnName])) {
errors[columnName] = `${columnName} is invalid`;
}
}
你的方法會變成
function validate(values) {
let errors = {};
// Email Error
validateColumn(values, 'email', '/\S @\S \.\S /', errors);
// Password Error
validateColumn(values, 'password', '/^.{6,}$/', errors);
return errors;
}
uj5u.com熱心網友回復:
現在,驗證功能用于密碼和電子郵件。
但是,這可以分為兩個功能,一個用于驗證電子郵件,另一個用于驗證密碼。這有助于將驗證電子郵件的操作與驗證密碼分離,并使除錯/維護更容易。
此外,如果您想讓 if-else 子句不那么混亂,您可以嘗試使用三元運算子。
function validate(values) {
errors = {};
errors.email = validate_email(values.email) == null
? null : validate_email(values.email);
errors.password = validate_password(values.password) == null
? null : validate_password(values.password);
return errors;
}
function validate_email(email) {
if (email == null) {
return "Email address is required";
} else if (!/\S @\S \.\S /.test(values.email)) {
return "Email address is invalid";
}
return null;
}
//validate_password left as an exercise
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/364996.html
標籤:javascript if 语句 切换语句
上一篇:需要從給定日期中提取季度
