繁体   English   中英

如何切换具有不一致变量格式的大小写

[英]how to switch-case with inconsistent variable format

switch (req.path)
{
    case "/api/posts": 
        console.log("posts");
    break;

    case "/api/posts/tags/*": // the part * is always changing depending on user input
        console.log("tags");
    break;

    case "/api/best": 
        console.log("best"); 
    break;

    default: 
        console.log("default");
}

req.path 给出了我的路径

例如

/api/post/tags/asd,dsfd
/api/post/tags/1
/api/post/tags/12,123

你如何尽可能有效地管理这个?

一些框架提供了看起来像的路径解析器

/*

this 和 * 之后的任何输入都将被忽略并视为相同。 我很好奇它的内部机制。

这样的事情怎么样(见jsfiddle ):

function route(req) {
    if(req.path === '/api/posts') {
        console.log('posts');
    }

    if(req.path.indexOf('/api/posts/tags') > -1) {
        console.log('tags');
    }

    // etc.
}

route({path: '/api/posts'}); // => posts
route({path: '/api/posts/tags/hi'}); // => tags
route({path: '/api/posts/tags/cool'}); // => tags

您也可以使用正则表达式。 请记住,如果某些输入条件可能彼此匹配,则您需要在每个if语句的末尾return ,或者简单地使用else if 完全取决于您寻找的路线。

对于default情况,您可以使用if... else if将所有内容串在一起,并在最后的else放入console.log('default') 我将上述解决方案保留得非常少,因此您可以根据需要扩展它。

输出

输出

您可以将正则表达式放入您的 switch 语句中,该语句将处理从该路由分支的所有情况。

switch (req.path)
{
    case "/api/posts": 
        console.log("posts");
    break;

    case req.path.match(/(\/api\/posts\/tags\/)/)[1]:
        console.log("tags");
    break;

    case "/api/best": 
        console.log("best"); 
    break;

    default: 
        console.log("default");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM