有没有办法可以使用带有以下逻辑的通配符创建一个switch语句:
case: '/jobs/'+WILDCARD and ending in +'-jobs' :
这是window.location.pathname,可以是'/ jobs / design-jobs',或'/ jobs / engineer-jobs'等
但是,还有其他以'/ jobs'开头的页面我不想申请这个,例如'/ jobs / post'
或有关更好方法的任何建议?
答案 0 :(得分:1)
没有switch
语句的通配符,但您可以例如使用RegExp
并对其进行测试:
if( path.match(/^\/jobs\/(.*)-jobs$/) !== null ) {
//jobs url
} else {
switch( path ) {
case '/jobs/post':
//something else
break;
}
}
答案 1 :(得分:0)
在某些情况下,您可以使用的一个技巧是使用函数来规范化交换机的输入,将变量输入转换为特定情况:
而不是:
switch(input) {
case 'something': // something
case 'otherthing': // another
case '/jobs/'+WILDCARD: // special
}
你可以这样做:
function transformInput (input) {
if (input.match(/jobs.*-jobs/) return 'JOBS';
return input;
}
switch(transformInput(input)) {
case 'something': // something
case 'otherthing': // another
case 'JOBS': // special
}
答案 2 :(得分:0)
您可以这样做:
var categories = {
design: function(){ console.log('design'); },
engineer: function(){ console.log('engineer'); }
};
for(var category in categories)
if(window.location.pathname === '/jobs/' + category + '-jobs')
categories[category]();