JavaScriptでURLパラメーターの文字列("?a=foo&b=bar"
)をオブジェクト({ a: 'foo', b: 'bar' }
)にしたいときにどうするのがスマートかを調べた
まずURLSearchParamsのコンストラクターに文字列を渡すのがよさそう
var params = new URLSearchParams('?a=foo&b=bar'); // 'a=foo&b=bar'でもよい
この処理をすることで、paramsにURLSearchParamsインスタンスが代入され、params.get('a')
でfoo
を取得することができるようになるが、オブジェクトではない
なので、次にURLSearchParams.entries()
を使ってこれをiterableプロトコルにする
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);