如何将我的代码从多个if语句更改为Switch Case语句

时间:2018-04-29 01:52:49

标签: javascript switch-statement

我有太多的IF语句, 如何将我的代码转换为案例样式?

这是我的代码示例 我已经研究了很多我似乎无法使用案例陈述

function onEdit(e){

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetBoutons = ss.getSheetByName("Boutons");
var sheetINV = ss.getSheetByName("INV");
var sheetList = ss.getSheetByName("Liste de Bouttons")  
var rangeUSER = sheetBoutons.getRange(4, 2)
var rangeUSER2 = sheetBoutons.getRange(4, 3)
var USER = rangeUSER.getValues();



    switch(USER) {
      case 'Afficher-INV1':
        sheetINV.hideColumns(1,183);
        sheetINV.showColumns(22);
        sheetINV.showColumns(24);      
        rangeUSER2.setValue(rangeUSER.getValue());
        rangeUSER.clearContent();
        break;

    default: 
    break
    }}

还有更多的案例需要补充,但现在只是视觉污染。 任何帮助表示赞赏,

2 个答案:

答案 0 :(得分:1)

猜测,此代码是JavaScript,使用的是Google Spreadsheets。

getValues返回一组值数组。这偶然地串联到单元格的值(由于长度为1的数组没有添加任何残差)。但JavaScript中的switch语句与严格的“===”相等(reference)相比,其中[['abc']] === 'abc'为false。

getValues的文档(上面链接)显示了一个索引结果的示例。我会看到switch (USER[0][0]) { ... }是否有帮助。

答案 1 :(得分:0)

示例:

switch (n)
{
    case constant1:
        // code to be executed if n is equal to constant1;
        break;

    case constant2:
        // code to be executed if n is equal to constant2;
        break;
        .
        .
        .
    default:
        // code to be executed if n doesn't match any constant
}

同样,对于您的代码,它可以是:

 switch (USER) {
      case 'Afficher-INV1':
        sheetINV.hideColumns(1,183);
        sheetINV.showColumns(22);
        sheetINV.showColumns(24);      
        rangeUSER2.setValue(rangeUSER.getValue());
        rangeUSER.clearContent();
        break;

      case 'Afficher-INV2':
        sheetINV.hideColumns(1,183);
        sheetINV.showColumns(22);
        sheetINV.showColumns(24);      
        rangeUSER3.setValue(rangeUSER.getValue());
        rangeUSER.clearContent();
        break;

    default: rangeUSER.clearContent();
    }