如果在switch的每个案例中都有陈述

时间:2016-10-21 07:18:31

标签: javascript switch-statement

有没有办法在每个案例中对函数中的变量进行检查而不是每次都输入?

的Javascript

function htmlParse(type) {
    var returnString = "";
    $('#drag-drop > .draggable').each(function() {
        var item = $(this).attr('id');
        switch(item) {
            case 'bread-top':
                returnString += '<html>';
                if (type == 'string')
                    returnString += '\n';
                break;
            case 'bread-bottom':
                returnString += '</html>';
                if (type == 'string')
                    returnString += '\n';
                break;
            case 'turkey':
                returnString += ''+
                            '   <body>\n'+
                            '       Your website content goes here.\n'+
                            '   </body>';
                if (type == 'string')
                    returnString += '\n';
                break;
        }
    });
    return returnString;
}

在这个例子中,我想在交换机的每个案例上运行if (type == 'string')...,而不必每次都实际输入它。

也许是因为它已经很晚了,但是如果不从数组中构建每个案例,我就无法想到这样做的方法。

2 个答案:

答案 0 :(得分:2)

放在 switch

之后
var item = $(this).attr('id');
switch (item) {
    case 'bread-top':
        returnString += '<html>';
        break;
    case 'bread-bottom':
        returnString += '</html>';
        break;
    case 'turkey':
        returnString += '' +
            '   <body>\n' +
            '       Your website content goes here.\n' +
            '   </body>';
        break;
}
if (type == 'string')
    returnString += '\n';

如果您不需要不匹配的情况,请添加default并使用标记:

var item = $(this).attr('id');
var flag = true;
switch (item) {
    case 'bread-top':
        returnString += '<html>';
        break;
    case 'bread-bottom':
        returnString += '</html>';
        break;
    case 'turkey':
        returnString += '' +
            '   <body>\n' +
            '       Your website content goes here.\n' +
            '   </body>';
        break;
    default:
        flag = false;
        break;
}
if (flag && type == 'string')
    returnString += '\n';

答案 1 :(得分:1)

由于您对所有情况都做同样的事情,您可以将其移出开关案例

替换

return returnString;

return type === "string" ? returnsString +"\n" : returnString;

请注意,如果你没有在其他地方初始化类型,那么条件总是会失败,如果returnString可能不是一个字符串,你应该找到一个更好的名字。