Home > Back-end >  shorten if conditions in js
shorten if conditions in js

Time:09-01

I want to shorten the conditions of a javascript if but I don't know how I can achieve it

code:

    if ((!emailValidation() || (!nameValidation()) || (!surnameValidation()) || (!addressValidation()) || (!cityValidation()) || (!postalCodeValidation()))) {        
}

I have the conditions defined in this way:

let surnameValidation = () => {
    if (apellidoUsuario.value.length == 0) {
        surnameError();
        return false;
    }

    else if (apellidoUsuario.value.length == 1) {
        surnameError();
        return false;
    }

    else {
        apellidoUsuario.focus;
        apellidoUsuario.style.border = '0';
        apellidoUsuario.style.backgroundColor = 'transparent';
        apellidoUsuario.style.outline = '1px solid #00ffb1'
        apellidoUsuario.style.transitionDuration = '0.4s'
        return true;
    }

I appreciate any help! :)

CodePudding user response:

You can remove all unnecessary parenthesis in your if condition:

if (
    !emailValidation() ||
    !nameValidation() ||
    !surnameValidation() ||
    !addressValidation() ||
    !cityValidation() ||
    !postalCodeValidation()
) {
}

Other than that, there's not really a clean, readable way to shorten your code.

CodePudding user response:

Proposition #1:

I would probably get those validations into a variable or function:

validations() {
   return [
     emailValidation(),
     nameValidation(),
     surnameValidation(),
     addressValidation(),
     cityValidation(),
     postalCodeValidation()];
}

and then I would:

if(validations().some(x=> !x)){
 ...
}

since validations return an array you can just use the some operator to find any invalid value.

Proposition #2:

I particularly would:

valid() {
   return [
     emailValidation(),
     nameValidation(),
     surnameValidation(),
     addressValidation(),
     cityValidation(),
     postalCodeValidation()].every(x => x === true);
}

and then I would:

if(!valid()){
 ...
}

It is always cleaner to use true conditions on if statements instead of false ones.

References: Clean Code - Uncle Bob.

  • Related