将通配符添加到JavaScript switch语句

时间:2014-01-09 10:22:35

标签: javascript

有没有办法可以使用带有以下逻辑的通配符创建一个switch语句:

case: '/jobs/'+WILDCARD and ending in +'-jobs' :

这是window.location.pathname,可以是'/ jobs / design-jobs',或'/ jobs / engineer-jobs'等

但是,还有其他以'/ jobs'开头的页面我不想申请这个,例如'/ jobs / post'

或有关更好方法的任何建议?

3 个答案:

答案 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]();