3

Javascript オブジェクトを連想配列として使用できます。だから私の質問は、同じエンディングを持つ複数のキーが1つの値に一致するように自動的に設定するにはどうすればよいですか?

私が望むものをより明確にするために例を書きます。このようなもの:

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 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 の使用を検討できます

于 2012-09-21T23:02:53.053 に答える
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 に答える