Javascript 对象可以用作关联数组。所以我的问题是如何自动设置具有相同结尾的多个键匹配一个值?
我会写一个例子来更明确地说明我想要什么。像这样的东西:
var handle = {}
handle[*css] = handlers.style;
每个以“css”结尾的键都应该与 handlers.style 匹配。
有什么办法做到这一点?
PD:我用 NodeJS 的服务器端 javascript 来做这个
Javascript 对象可以用作关联数组。所以我的问题是如何自动设置具有相同结尾的多个键匹配一个值?
我会写一个例子来更明确地说明我想要什么。像这样的东西:
var handle = {}
handle[*css] = handlers.style;
每个以“css”结尾的键都应该与 handlers.style 匹配。
有什么办法做到这一点?
PD:我用 NodeJS 的服务器端 javascript 来做这个
如果您遍历对象属性并检查属性名称是否与所需的模式匹配,则这是可能的。就像是:
for (var i in obj) {
if (i.toString().substr(-3) === 'css') {
obj[i] = handlers.style;
}
}
一种快速而肮脏的方式:
var handle = {}
name = "article_users_css"
handle[name.substr(name.length-3)] = "something"
或者如果你可以使用一些符号来分隔后缀,你可以使用它来代替:
name.substr(str.lastIndexOf(YOUR_CHAR_OF_CHOICE))
我不认为你能做到这一点。但是您可以在将请求路由到处理程序之前使用请求路径名。请参见下面的示例:
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