Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何避免if语句中的java脚本代码重复_Javascript_Typescript - Fatal编程技术网

Javascript 如何避免if语句中的java脚本代码重复

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;

我有以下函数,其中包含一些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;
        }

        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”,字段值:布尔值