Ber*_*ram 6 javascript switch-statement
在Javascript中,有没有办法实现类似的东西?
const databaseObjectID = "someId"; // like "product/217637"
switch(databaseObjectID) {
case includes('product'): actionOnProduct(databaseObjectID); break;
case includes('user'): actionOnUser(databaseObjectID); break;
// .. a long list of different object types
}
Run Code Online (Sandbox Code Playgroud)
这是一个好奇的问题,以了解开关/案例的可能性,因为在这个特殊情况下,我已经解决了我的问题使用const type = databaseObjectID.split('/')[0];和应用开关案例type
she*_*nis 10
这样可行,但不应在实践中使用.
const databaseObjectID = "someId"; // like "product/217637"
switch(true) {
case databaseObjectID.includes('product'): actionOnProduct(databaseObjectID); break;
case databaseObjectID.includes('user'): actionOnUser(databaseObjectID); break;
// .. a long list of different object types
}
Run Code Online (Sandbox Code Playgroud)
您的使用将被视为滥用情况。
而是只使用ifs
if (databaseObjectId.includes('product')) actionOnProduct(databaseObjectID);
else if (databaseObjectId.includes('user')) actionOnUser(databaseObjectID);
// .. a long list of different object types
Run Code Online (Sandbox Code Playgroud)
如果ObjectId包含产品或用户周围的静态内容,则可以将其删除并将用户或产品用作键:
var actions = {
"product":actionOnProduct,
"user" :actionOnUser
}
actions[databaseObjectId.replace(/..../,"")](databaseObjectId);
Run Code Online (Sandbox Code Playgroud)
小智 6
抱歉,我是菜鸟,所以可能要清理一下,但这是个主意。传递给函数以检查并返回类别,然后使用开关。
function classify(string){
var category = categorize(string);
switch (category) {
case 'product':
console.log('this is a product');
break;
case 'user':
console.log('this is a user');
break;
default:
console.log('category undefined');
}
}
function categorize(string){
if (string.includes('product')){
return 'product';
}
if (string.includes('user')){
return 'user';
}
}
classify("product789");
classify("user123");
classify("test567");
Run Code Online (Sandbox Code Playgroud)
也很抱歉,因为您的示例不匹配。
问题:
\n\n\n在 switch Javascript 情况下使用字符串 \xe2\x80\x9cincludes()\xe2\x80\x9d
\n
虽然该includes()方法可以工作,但它区分大小写,并且只匹配任何字符。我找到了一个我更喜欢的正则表达式解决方案,并且提供了很大的灵活性。例如,您可以轻松地将其更改为仅匹配单词。
var sourceStr = \'Some Text and literaltextforcase2 and more text\'\n\nswitch (true) { // sourceStr\n\n case (/LiteralTextForCase1/i.test(sourceStr)):\n console.log(\'Case 1\');\n break;\n\n case (/LiteralTextForCase2/i.test(sourceStr)):\n console.log(\'Case 2\');\n break;\n\n default:\n console.log(\'ERROR No Case provided for: \' + sourceStr);\n};\n\n//-->Case 2Run Code Online (Sandbox Code Playgroud)\r\n| 归档时间: |
|
| 查看次数: |
9753 次 |
| 最近记录: |