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
これで車輪の再発明をしなくて済むのが嬉しい。