Javascript对象匹配

时间:2012-09-21 22:30:43

标签: javascript

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

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

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

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

任何方式这样做?

PD:我使用NodeJS的服务器端javascript执行此操作

3 个答案:

答案 0 :(得分:4)

如果遍历对象属性并检查属性名称是否与所需模式匹配,则可以执行此操作。类似的东西:

for (var i in obj) {
  if (i.toString().substr(-3) === 'css') {
    obj[i] = handlers.style;
  }
}

答案 1 :(得分:1)

快速而肮脏的方式:

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

或者如果您可以使用某个符号来分隔后缀,则可以使用此代码:

name.substr(str.lastIndexOf(YOUR_CHAR_OF_CHOICE))

答案 2 :(得分: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]();
 }

您可以考虑使用支持基于regEx匹配的路由的Express