这几个function重复性过高,怎么优化会更好?

html:

<ng-container *ngIf="oCode_test1(table.oCode)'">
    <span>{{aaa}}:</span>
</ng-container>
<ng-container *ngIf="oCode_test2(table.oCode)'">
    <span>{{bbb}}:</span>
</ng-container>
<ng-container *ngIf="oCode_test3(table.oCode)'">
    <span>{{ccc}}:</span>
</ng-container>

ts:

  oCode_test1(oCode){
    if(oCode == 'aa' || oCode == 'aa1st' || oCode == 'aah2' ||
       oCode == 'aaq1' || oCode == 'aaq3' || oCode == 'aaq4'){
         return true
       }
       return false
  }

  oCode_test2(oCode){
    if(oCode == 'qq' || oCode == 'qq1st' || oCode == 'qqh2' ||
       oCode == 'qqq1' || oCode == 'qqq3' || oCode == 'qqq4'){
         return true
       }
       return false
  }

  oCode_test3(oCode){
    if(oCode == 'ww' || oCode == 'ww1st' || oCode == 'wwh2' ||
       oCode == 'wwq1' || oCode == 'wwq3' || oCode == 'wwq4'){
         return true
       }
       return false
  }

ts的部分,感觉重复性过高,该怎么优化,3个function有办法合并成一个吗?

阅读 2.5k
4 个回答
public readonly testCaseOne = ['aa', 'aa1st', 'aah2', 'aaq1', 'aaq3', 'aaq4'];
public oCode_test(oCode, testCase) {
    return testCase.includes(oCode);
}
<ng-container *ngIf="oCode_test(table.oCode, testCaseOne)">
    <span>{{aaa}}:</span>
</ng-container>
    if (oCode.startsWith('aa')) {
        return ['aa', 'aa1st', ...].includes(oCOde)
    } else if (oCode.startsWith('qq') {
        return ['qq', 'qq1st', ...].includes(oCode)
    } else if (oCode.startsWith('ww')) {
        return ['ww', 'ww1st', ...].includes(oCode)
    } else {
        return false
    }

伪代码,大意如下

<ng-container>
    <span>{{oCode_test(table.oCode)}}:</span>
</ng-container>

oCode_test(oCode){
    switch oCode
        case 'aa'
        case 'aa1s'
        return aa;
        break;
        case 'qq':
        case 'qq1s':
        return bb;
        break;
        case 'ww':
        case 'ww1s':
        return cc;
        break;
        default:
        break;
}
function oCode_test1(oCode){
    // 以一个小写字母且重复一次为开头, 后跟1st|h2|q1|q3|q4或者空, 为结尾
    return /^([a-z])\1(1st|h2|q1|q3|q4|)$/.test(oCode)
}
推荐问题