【问题标题】:How to refactor this to be more terse?如何将其重构为更简洁?
【发布时间】:2016-08-12 08:03:40
【问题描述】:

所以我有一个 validatePassword 函数,它可以对我们的项目进行一些特定的验证工作。

目前,它返回一个对象,如下所示:

{
  valid: boolean,
  errors: array
}

所以实际使用是这样的:

const passwordValidation = validatePassword(value)

if (passwordValidation.valid === false) {
  modifiedValidation.password.message = passwordValidation.errors
  modifiedValidation.password.uiState = 'error'
  formIsValid = false
}

有没有更好的方法来做到这一点,我不必实例化一个对象作为函数的结果,然后用它来做事?

例如:

if (validatePassword(value).validity === true)

但是,我不想每次都重新运行该函数来访问validatePassword(value)的属性...

【问题讨论】:

    标签: javascript function validation object


    【解决方案1】:

    我认为您的代码看起来很中肯,如果您正在这样做的话。但是,如果您以非常相似的方式验证多个项目,则可以重构该部分,这样您就不必重复自己。

    function validate(validationResult, target) {
       if(validationResult.valid === false) {
          target.message = validationResult.errors;
          target.uiState = 'error';
       }
       return validationResult.valid !== false;
    }
    
    var formIsValid = [
       validate(validatePassword(value), modifiedValidation.password),
       validate(validateOtherField(otherValue), modifiedValidation.other)
    ].every(function(x) { return x; });
    

    【讨论】:

      猜你喜欢
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多