首页 > 解决方案 > 如何避免if语句中的java脚本重复代码

问题描述

我有以下功能,里面有一些词干:

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

如何改进它并避免重复?

我尝试使用带有元组的 foreach 作为迭代值,但我无法从 foreach 返回布尔值

标签: javascripttypescript

解决方案


尝试这个

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
 }

}


推荐阅读