如何将数据推送到数组中?

How can I push data into an array?

我已经将一些数据推送到一个数组中:

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

它实际上工作正常。但是在我看来,确实是重复代码太多了,但是我还是找不到减少代码的方法,或者更简单更好的解决方案。

如果我没理解错的话,你想简化你的陈述。从我的角度来看,它可能是这样的:

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 语句即可

我会用两种方法来做

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

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

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