UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【JavaScript】URLパラメーターの文字列をスマートにオブジェクトにする

JavaScriptでURLパラメーターの文字列("?a=foo&b=bar")をオブジェクト({ a: 'foo', b: 'bar' })にしたいときにどうするのがスマートかを調べた

まずURLSearchParamsのコンストラクターに文字列を渡すのがよさそう

var params = new URLSearchParams('?a=foo&b=bar'); // 'a=foo&b=bar'でもよい

developer.mozilla.org

この処理をすることで、paramsにURLSearchParamsインスタンスが代入され、params.get('a')fooを取得することができるようになるが、オブジェクトではない

なので、次にURLSearchParams.entries()を使ってこれをiterableプロトコルにする

developer.mozilla.org

iterableプロトコルにすれば次のようにfor ... ofで取り出すことができる

var params = new URLSearchParams('?a=foo&b=bar');

for(var pair of searchParams.entries()) {
   console.log(pair[0]+ ', '+ pair[1]);
}

しかし、ここでさらにiterableプロトコルからオブジェクトにするObject.fromEntries()を使えば、スマートにオブジェクトにすることができそう

var params = new URLSearchParams('?a=foo&b=bar');
var obj = Object.fromEntries(params);

developer.mozilla.org