Javascript 如何避免if语句中的java脚本代码重复
我有以下函数,其中包含一些stetemsnt:Javascript 如何避免if语句中的java脚本代码重复,javascript,typescript,Javascript,Typescript,我有以下函数,其中包含一些stetemsnt: isFieldVisible(node: any, field: DocumentField): boolean { if (field.tag === 'ADDR_KOMU') { let field = this.dfs_look(node.children, 'ADDR_APPLICANTTYPE'); return field.fieldvalue == 1;
isFieldVisible(node: any, field: DocumentField): boolean {
if (field.tag === 'ADDR_KOMU') {
let field = this.dfs_look(node.children, 'ADDR_APPLICANTTYPE');
return field.fieldvalue == 1;
}
if (field.tag === 'ADDR_SNAME') {
let field = this.dfs_look(node.children, 'ADDR_APPLICANTTYPE');
return field.fieldvalue == 1;
}
if (field.tag === 'ADDR_FNAME') {
let field = this.dfs_look(node.children, 'ADDR_APPLICANTTYPE');
return field.fieldvalue == 1 || field.fieldvalue == 2;
}
}
如何改进并避免重复
我曾尝试使用带有tuple的foreach作为迭代值,但我无法从foreach返回boolean,switch语句肯定有助于节省冗余
isFieldVisible(node: any, field: DocumentField): boolean {
let field;
switch(field.tag) {
case 'ADDR_KOMU':
case 'ADDR_SNAME':
field = this.dfs_look(node.children, 'ADDR_APPLICANTTYPE');
return (field.fieldvalue == 1);
case 'ADDR_FNAME':
field = this.dfs_look(node.children, 'ADDR_APPLICANTTYPE');
return (field.fieldvalue == 1 || field.fieldvalue == 2);
default:
//Do something
}
}
您可以在
if
条件中使用JavaScript或(| |)
运算符,以避免重复代码
isFieldVisible(node: any, field: DocumentField): boolean {
if (field.tag=== 'ADDR_KOMU' || field.tag=== 'ADDR_SNAME' || field.tag=== 'ADDR_FNAME' ) {
let field= this.dfs_look(node.children, 'ADDR_APPLICANTTYPE');
if(field.tag=== 'ADDR_FNAME'){
return field.fieldvalue == 1 || field.fieldvalue == 2;
}
return field.fieldvalue == 1;
}
}
另外,请检查如何使用运算符,即javascript
中的|
isFieldVisible(node: any, field: DocumentField): boolean {
let field:{
tag: "ADDR_KOMU" | "ADDR_SNAME" |"ADDR_FNAME",
fieldvalue:boolean
};
switch (field.tag) {
case 'ADDR_KOMU':
case 'ADDR_SNAME':
field = this.dfs_look(node.children, 'ADDR_APPLICANTTYPE');
return (field.fieldvalue == 1);
case 'ADDR_FNAME':
field = this.dfs_look(node.children, 'ADDR_APPLICANTTYPE');
return (field.fieldvalue == 1 || field.fieldvalue == 2);
default:
return
}
}dfs\u的第二个参数的值在任何情况下都会改变吗?如果是,则可以在所有条件语句之前对字段求值一次。无论如何,一个switch语句肯定会有帮助,因为一旦一个案例得到满足,你无论如何都会返回。是的,你能分享一个示例吗?你可以简单地使用javascript
或(| |)
操作符。为什么你有两个字段
?我现在知道了,但我记录了字段的类型应该是标记:“ADDR_KOMU”|“ADDR|SNAME”|“ADDR|FNAME”,字段值:布尔值