Edited at

JavaScriptでGETパラメータを取得するワンライナー

More than 1 year has passed since last update.

読みやすくするために改行しています。

ちゃんとしたワンライナー(;無し)になったのは2だけです。

(もうちょっと頑張れるのかも知れませんが…)

ES2015版の動作確認は Firefox 50.0, Chrome 54.0.2840.98 で行いました。


1. ES2015

window.location.search.substring(1).split('&')

.reduce((result, query) => {
const [k, v] = query.split('=');
result[k] = decodeURI(v);
return result;
}, {});


2. ES2015 (Object.assignを使ったバージョン)

window.location.search.substring(1).split('&')

.map(query => query.split('='))
.reduce((result, [k, v]) => Object.assign(result, { [k]: decodeURI(v) }), {});


3. ES5

window.location.search.substring(1).split('&')

.reduce(function(result, query) {
var pair = query.split('=');
result[pair[0]] = decodeURI(pair[1]);
return result;
}, {});


使い方

// ES2015

const getUrlParams = () => window.location.search.substring(1).split('&').reduce((result, query) => { const [k, v] = query.split('='); result[k] = decodeURI(v); return result; }, {});

//ES5

var getUrlParams = function() {
return window.location.search.substring(1).split('&').reduce(function(result, query) { var pair = query.split('='); result[pair[0]] = decodeURI(pair[1]); return result; }, {});
}

getUrlParams();


実行結果

サンプルURL

結果

{ 

site: "",
source: "hp",
q: "あいう+えお",
oq: "あいう+えお"
}