我已将一些数据推入数组:
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);
}
}
它实际上工作正常。但是在我看来,这确实是重复代码太多,但是我仍然找不到减少代码或做出更简单更好的解决方案的方法。
答案 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语句中就可以了