それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

javascriptのGETパラメータ解析をArray.map/reduceで。

GETクエリをオブジェクトのkey=valueに取り出すのもArrayの反復子機能を使えば、結構簡単に作ることが出来ますね。

URLのパラメータを取得する。

url = new URL(location.href);
keys = url.search.replace("?", "").split(/&/);
keys = keys.map( function(e){ return  e.split(/=/)} )
params = keys.reduce( function(p, e){  name=e[0];val=e[1]; p[name]=val; return p  }, {} )
console.log(params)

URLオブジェクトはDOM中に存在するのでnodeだと動かないけど、ブラウザ中だと new URLは結構便利だと思う。わざわざ、new URL(str)しているのは、リンク文字列を操作するときもあるかなと。

URL.prototype.get_params=function(){
  var keys = this.search.replace("?", "").split(/&/);
  keys = keys.map( function(e){ return  e.split(/=/)} )
  var params = keys.reduce( function(p, e){  name=e[0];val=e[1]; p[name]=val; return p  }, {} )
  return params;  
}

もっと綺麗な実装はあるとは思うけど、paramsを取るには十分だと思った。

2016-07-08追記

query string を取る方法はいくらでも考えられそうだけど、HTML5のURLオブジェクトを使えば更に簡単にできる

a =new window.URL('http://www.yahoo.co.jp/?name=takuya')
a.searchParams.get('name') //=> takuya

これで車輪の再発明をしなくて済むのが嬉しい。

広告を非表示にする