如何重构这个更简洁?

时间:2016-08-12 08:03:41

标签: javascript function validation object

所以我有一个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)的属性......

1 个答案:

答案 0 :(得分:0)

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

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