3

Javascript 对象可以用作关联数组。所以我的问题是如何自动设置具有相同结尾的多个键匹配一个值?

我会写一个例子来更明确地说明我想要什么。像这样的东西:

var handle = {}
handle[*css] = handlers.style;

每个以“css”结尾的键都应该与 handlers.style 匹配。

有什么办法做到这一点?

PD:我用 NodeJS 的服务器端 javascript 来做这个

4

3 回答 3

4

如果您遍历对象属性并检查属性名称是否与所需的模式匹配,则这是可能的。就像是:

for (var i in obj) {
  if (i.toString().substr(-3) === 'css') {
    obj[i] = handlers.style;
  }
}
于 2012-09-21T22:36:18.683 回答
1

一种快速而肮脏的方式:

var handle = {}
name = "article_users_css"
handle[name.substr(name.length-3)] = "something"

或者如果你可以使用一些符号来分隔后缀,你可以使用它来代替:

name.substr(str.lastIndexOf(YOUR_CHAR_OF_CHOICE))
于 2012-09-21T22:40:41.080 回答
1

我不认为你能做到这一点。但是您可以在将请求路由到处理程序之前使用请求路径名。请参见下面的示例:

 var path = "mystyle.css"
 // var path = "index.html"
 // var path = "image.png"

 var handle = {};
 handle[css] = handlers.style;
 handle[html] = handlers.html;
 handle[img] = handlers.img;

 if (path.match(/.*\.css/)) {
     handle[css]();
 } 
 else if (path.match(/.*\.html/)) {
       handle[html]();
 }
 else if ((path.match(/.*\.png/) || path.match(/.*\.jpg/)) {
       handle[img]();
 }

您可以考虑使用支持基于正则表达式匹配的路由的 Express

于 2012-09-21T23:02:53.053 回答