Javascript对象可以用作关联数组。 所以我的问题是如何自动设置具有相同结尾的多个键匹配一个值?
我会写一个例子来更明确地说明我想要的东西。 像这样:
var handle = {}
handle[*css] = handlers.style;
每个以“css”结尾的键都应与handlers.style匹配。
任何方式这样做?
PD:我使用NodeJS的服务器端javascript执行此操作
答案 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