如何将数据推入数组?

时间:2018-11-26 11:58:28

标签: javascript jquery if-statement push

我已将一些数据推入数组:

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 :(得分:2)

我会用两种方法做

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

答案 1 :(得分:2)

您可以使用数组简化if语句:

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

答案 2 :(得分:1)

如果我很了解您,您想简化您的表述。在我看来,可能是这样的:

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语句中就可以了