处理开关箱

问题描述 投票:2回答:4

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

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

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

这等效于:

if ( myVar.startsWith( 'product' )) {}
javascript switch-statement
4个回答
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;
}

0
投票

喜欢这个:-

var x="product";

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

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;
}

0
投票

添加ternary operator的最佳方法,尝试此方法可以正常工作

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

<script async src="//jsfiddle.net/arabhossain/Lskq4nar/4/embed/"></script>
© www.soinside.com 2019 - 2024. All rights reserved.