는 경우 다른 스위치는 경우 대체에서 Javascript

0

질문

에 대한 대안을 찾고 conditional statement. 에서 볼 수 있듯이 내 코드,프로세스는 지나치게 되풀 및 무질서합니다. 그것은 점점 더 어려운을 유지하는 코드로에서 성장 크기입니다. 기 위해서는 이러한 상황을 방지하기 위해,나는 대안을 찾고 있다.

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;
}

3

최고의 응답

1

이동할 수 있습니다 몇 가지 논리로 구성됩니다. 하려고 이 검사는 그에 따라 모든 정규표현식이 있습니다. 그래서 최소한의 길이는 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;
}
2021-11-24 07:09:42

는 좋은 방법. 코드를 간단하게 업데이트하고 유지 관리할 수 있습니다. :D
Sazzad Hossain
0

액세스할 수 있습의 열 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;
}
2021-11-24 07:07:10
0

지금,유효성 검사 기능을 사용 모두를 위해 암호를 이메일 등이 있습니다.

그러나,이것으로 분할할 수 있습니다 두 가지 기능을 하나의 유효성 검사에 대한 전자 우편,및 다른 유효성 검사에 대한 암호를 암호화합니다. 이것을 분리하며 작업의 유효성 검증에서 이메일을 암호 검사하고 디버깅/유지 쉽습니다.

또한,당신은 당신이 시도할 수 있는 원산자 만들고 싶다면 당신의한 경우-다른 절 덜 복잡.

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
2021-11-24 07:07:15

당신이 시도할 수 있습 switch 경우를 대신하는 경우 다른
Nilesh

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................