是有辦法,我可以創造一個switch語句與邏輯通配符:通配符添加到JavaScript switch語句
case: '/jobs/'+WILDCARD and ending in +'-jobs' :
這是對window.location.pathname,這可能是「/jobs/design-jobs'或'/ jobs/engineer-jobs'等
但是,還有其他以'/ jobs'開頭的頁面我不希望這適用於,例如'/ jobs/'
或者有更好方法的建議嗎?
是有辦法,我可以創造一個switch語句與邏輯通配符:通配符添加到JavaScript switch語句
case: '/jobs/'+WILDCARD and ending in +'-jobs' :
這是對window.location.pathname,這可能是「/jobs/design-jobs'或'/ jobs/engineer-jobs'等
但是,還有其他以'/ jobs'開頭的頁面我不希望這適用於,例如'/ jobs/'
或者有更好方法的建議嗎?
一個技巧可能是使用功能正常化交換機的輸入,把可變投入到具體的案例:
相反的:
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
}
謝謝!用法如下:var curPage = window.location.pathname.match(/ jobs。* - jobs /)? 'search-results':window.location.pathname;開關(curPage){} – rpsep2
不,沒有switch
聲明的通配符,但您可以例如使用RegExp
和測試反對:
if(path.match(/^\/jobs\/(.*)-jobs$/) !== null) {
//jobs url
} else {
switch(path) {
case '/jobs/post':
//something else
break;
}
}
或者你可以通過函數 – Yang
@djay將其抽象出來。當然,對於OP來說,它是如何做到這一點,以便它符合他的代碼。 –
你可以做事端g像這樣:
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]();
不,afaik這隻能用正則表達式來完成。而'case:'標籤必須是一個文字值。 – nietonfir