2011-08-15 170 views
1

我怎麼可以做這樣的事情與switch語句:加工開關的情況下

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

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

這是等價的:

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

回答

5

可以做到這一點,但它不是一個邏輯使用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

你是對的,如果這是唯一的方法,那麼,是不是整個字符串,而不是一開始的匹配正確的方式 – HyderA

0

像這樣: -

var x="product"; 

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

字符串。 – Guffa

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