使用未知数量的案例进行切换 - 略有变化的默认情况

Switch with unknown number of cases - a default case that slightly changes?

本文关键字:有变化 情况 默认 未知数 案例      更新时间:2023-09-26

我有一个开关语句,案例数量未知。在案例 1 之后,每个案例输出相同的公式。公式中唯一的区别是基本原理标签数组中的数字。在案例 2 中,它从基本原理标签[0] 开始;那么在情况 3 中,它是基本标签[1];案例4 - 理由标签[2];等等。有没有办法设置一个默认案例,在情况发生时增加 rationaleLabel 数组中的数字?

for(i = 0; i < drugs.length; i++){
            rationaleTable[i] = [];
          for(j = 0; j < rationaleLabel.length; j++){
            switch(j){
              case 0:
                rationaleTable[j] = drugs[i];
                break;
              case 1:
                rationaleTable[j] = drugs[i];
                break;
              case 2:
                rationaleTable[j] = "=COUNTIFS('All Events'!$D:$D,'"*" + rationaleLabels[0] + "*'" , 'All Events;!$E:$E,'"" + drugs[i] + "*'")";
                break;  
              case 3:
                rationaleTable[j] = "=COUNTIFS('All Events'!$D:$D,'"*" + rationaleLabels[1] + "*'" , 'All Events;!$E:$E,'"" + drugs[i] + "*'")";
                break;  
              case 4:
                rationaleTable[j] = "=COUNTIFS('All Events'!$D:$D,'"*" + rationaleLabels[2] + "*'" , 'All Events;!$E:$E,'"" + drugs[i] + "*'")";
                break;   
              case 5:
                rationaleTable[j] = "=COUNTIFS('All Events'!$D:$D,'"*" + rationaleLabels[3] + "*'" , 'All Events;!$E:$E,'"" + drugs[i] + "*'")";
                break;  
              case 6:
                rationaleTable[j] = "=COUNTIFS('All Events'!$D:$D,'"*" + rationaleLabels[4] + "*'" , 'All Events;!$E:$E,'"" + drugs[i] + "*'")";
                break;  
              case 7:
                rationaleTable[j] = "=COUNTIFS('All Events'!$D:$D,'"*" + rationaleLabels[5] + "*'" , 'All Events;!$E:$E,'"" + drugs[i] + "*'")";
                break;       
               
            }      
          }
        }

这可能有效:

for(j = 0; j < rationaleLabel.length; j++){
  if(j==0 || j==1) {
    rationaleTable[j] = drugs[i];
  } else {
     rationaleTable[j] = "=COUNTIFS('All Events'!$D:$D,'"*" + rationaleLabels[j -2 ] + "*'" , 'All Events;!$E:$E,'"" + drugs[i] + "*'")";
  }
}
会以

与 Chris 相同的方式执行此操作,但这里仍然是开关大小写想法的修改版本:

for(i = 0; i < drugs.length; i++){
            rationaleTable[i] = [];
          for(j = 0; j < rationaleLabel.length; j++){
            switch(j){
              case 0:                    
              case 1:
                rationaleTable[j] = drugs[i];
                break;
              default:
                rationaleTable[j] = "=COUNTIFS('All Events'!$D:$D,'"*" + rationaleLabels[j-2] + "*'" , 'All Events;!$E:$E,'"" + drugs[i] + "*'")";
                break;                  
               
            }      
          }
        }

您可以在默认值中实现案例 2 到 7(我的意思是回退情况)我不知道你使用的是哪种语言,但语法应该非常接近以下内容:

switch(j) {
 ...
 default:
    rationaleTable[j] = "=COUNTIFS('All Events'!$D:$D,'"*"" + rationaleLabel[j-2] + ...
}