Как я могу поместить данные в массив? - PullRequest
0 голосов
/ 26 ноября 2018

Я поместил некоторые данные в массив:

if(target === 'create'){
    if(name === 'form[username]' || name === 'form[name]' || name === 'form[slug]' || name === 'form[plainPassword]'){
        errors.push(name);
    }
} else {
    if(name === 'form[username]' || name === 'form[name]' || name === 'form[slug]' ){
        errors.push(name);
    }
}

На самом деле все работает нормально.Но мне кажется, что это действительно слишком много повторяющегося кода, но я все еще не могу найти способ уменьшить код или сделать более простое и лучшее решение.

Ответы [ 3 ]

0 голосов
/ 26 ноября 2018

Я бы сделал это двумя способами

function CheckErrors(target,name){
   switch(target){
     case 'create':
       SaveError(name,true);
       break;
     default:
       SaveError(name);
       break;
    }
}

function SaveError(name,checkPassword){
     if(name === 'form[username]' || name === 'form[name]' || name === 'form[slug]' ||(checkPassword && name === 'form[plainPassword]')){
        errors.push(name);
    }
}
0 голосов
/ 26 ноября 2018

Вы можете использовать массивы, чтобы упростить оператор if:

if((target === 'create' && name === 'form[plainPassword]') || ['form[username]', 'form[name]', 'form[slug]'].includes(name)){
  errors.push(name);
}
0 голосов
/ 26 ноября 2018

Если я вас правильно понимаю, вы хотите упростить свои высказывания.С моей точки зрения это может быть так:

if(name === 'form[username]' || name === 'form[name]' || name === 'form[slug]' 
                             || (name === 'form[plainPassword]' && target === 'create')){
    errors.push(name);
}

Так как:

name === 'form[username]' || name === 'form[name]' || name === 'form[slug]'

повторяется два раза, не имеет значения, является ли target === 'create' истинным или ложным для этих утверждений.

На самом деле просто добавьте (name === 'form[plainPassword]' && target === 'create') к оператору if, и это все

...