处理开关案例

时间:2011-08-15 01:18:53

标签: javascript switch-statement

如何使用switch语句执行此类操作:

String.prototype.startsWith = function( str ){
    return ( this.indexOf( str ) === 0 );
}

switch( myVar ) {
    case myVar.startsWith( 'product' ):
        // do something 
        break;
}

这相当于:

if ( myVar.startsWith( 'product' )) {}

4 个答案:

答案 0 :(得分:7)

可以这样做,但这不是switch命令的逻辑用法:

String.prototype.startsWith = function( str ){
    return ( this.indexOf( str ) === 0 );
};

var myVar = 'product 42';

switch (true) {
    case myVar.startsWith( 'product' ):
        alert(1); // do something
        break;
}

答案 1 :(得分:0)

像这样: -

var x="product";

switch({"product":1, "help":2}[x]){
case 1:alert("product");
    break;
 case 2:alert("Help");
    break;
};

答案 2 :(得分:0)

您可以执行this

之类的操作
BEGINNING = 0;
MIDDLE = 1;
END = 2;
NO_WHERE = -1;

String.prototype.positionOfString = function(str) {
    var idx = this.indexOf(str);

    if (idx === 0) return BEGINNING;
    if (idx > 0 && idx + str.length === this.length) return END;
    if (idx > 0) return MIDDLE;
    else return NO_WHERE;
};

var myVar = ' product';

switch (myVar.positionOfString('product')) {
case BEGINNING:
    alert('beginning'); // do something
    break;
case MIDDLE:
    alert('middle');
    break;
case END:
    alert('END');
    break;
default:
    alert('nope');
    break;
}

答案 3 :(得分:0)

通过添加ternary operator的最佳方法,请尝试使用此方法应该可以完美运行

var bg = $('.bg');
// check-box value decide background-color.
$(document).on('click', "div[name='in_out']", function(event){
    var v = $("div[name='in_out'] div input:checked").attr('data-value');
    if (v =='O') {
        bg.css("background-color","#adff2f");
    }
    else if(v =='I') {
        bg.css("background-color","#ffc0cb");
    }
});

var myVar = 'product 42';
switch (myVar) {
   case myVar.startsWith('product') ? myVar : '' :
   alert(1); // do something
   break;
 }