【JavaScript】URLのクエリパラメータを取得する【URLSearchParams】
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
本記事では、JavaScriptでURLのクエリパラメータを取得する方法をご紹介しています。
URLのクエリパラメータを取得したいんだけど、どうすればいいのかな?
上記の疑問にお答えしています。
では、解説していきます。URLのクエリパラメータを取得する
URL
オブジェクトでURLからクエリを取得し、URLSearchParamas
オブジェクトでURLのクエリパラメータを取得します。
下記のURLからクエリパラメータを取得してみます。
https://into-the-program.com/?a=100&b=200&c=300
JS
const url = new URL('https://into-the-program.com?a=100&b=200&c=300');
const params = new URLSearchParams(url.search);for(let param of params){
console.log(param);
}
実行結果
["a", "100"]
["b", "200"]
["c", "300"]
URLSearchParamas
はオブジェクトを返します。そのためfor...of
ですべてのキーと値のペアを列挙することができます。
URLSearchParams.get()でキーを指定して値を取得する
前項ではクエリパラメータを取得してループですべてのキーと値のペアを出力しましたが、URLSearchParams.get()
でキーを指定して値だけを取得することも可能です。URLSearchParams.get()
は引数に指定した文字列と最初に一致するキーの値を返します。
JS
const url = new URL('https://into-the-program.com?a=100&b=200&c=300');
const params = new URLSearchParams(url.search);console.log(params.get('a'));
console.log(params.get('b'));
console.log(params.get('c'));
実行結果
"100"
"200"
"300"
実行結果は想定した通りですね。指定したキーの値が出力されています。
URLSearchParamsには他にも便利なメソッドが用意されている
本記事ではURLSearchParams
の一部メソッドした使用していないですが、他にも便利なメソッドが用意されています。
下記はURLSearchParams
のメソッド一覧です。クエリパラメータの処理であればURLSearchParams
さえあれば対応できるかと思います。
URLSearchParamsのメソッド一覧
URLSearchParams.append(key, value) | 引数に指定されたキーと値を新しい検索パラメータとして追加する |
---|---|
URLSearchParams.delete(key) | 指定されたキーと一致するすべてのキーとキーの値をパラメータから削除する |
URLSearchParams.entries() | オブジェクトに含まれるキーと値のペアを列挙するイテレータを返す |
URLSearchParams.forEach() | コールバック関数を介して、オブジェクトに含まれるすべての値を返す |
URLSearchParams.get(key) | 引数に指定されたキーと一致する最初のキーの値を返す |
URLSearchParams.getAll(key) | 引数に指定されたキーと一致するすべてのキーの値を返す |
URLSearchParams.has(key) | 引数に指定されたキーが存在するか真偽値(true|false)を返す |
URLSearchParams.keys() | オブジェクトに含まれるキーを列挙するイテレータを返す |
URLSearchParams.set(key, value) | 引数に指定されたキーと値をパラメータに設定する。同名の値が存在していた場合は削除される |
URLSearchParams.sort() | キーを基準にソートする |
URLSearchParams.toString() | クエリパラメータを返す |
URLSearchParams.values() | オブジェクトに含まれるキーの値を列挙するイテレータを返す |
ただ、この便利なオブジェクト、IE11には対応していません。残念なことに。
しかしご安心を!
URL
とURLSearchParams
にはポリフィルが用意されています。それを読み込むことで本記事でご紹介した内容であればIE11でも動作するようになります。
IE11の対応について
URL
とURLSearchParams
のポリフィルに必要なJSのCDNを記載しておきます。これらを<script>
で読み込んでご利用ください。
URLのポリフィル
URLSearchParamasのポリフィル
これで上記のオブジェクトを使用できない悩みから解放されます!
最後に
本記事でご紹介したURL
とURLSearchParams
のオブジェクトの存在を知ったのはつい最近のことなのですが、クエリパラメータに関する処理であれば概ね対応できるほど充実した機能を提供してくれています。休み返上で勉強して良かったと思う瞬間です。今後もたくさん使っていきたいと思います!
以上、JavaScriptでURLのクエリパラメータを取得するURLSearchParamsのご紹介でした!
JavaScriptを基礎からしっかりと学びたい方へ
下記の参考書がおすすめです。私がJavaScript入門時に購入した書籍で、基礎から応用まで多様なサンプルを用いて解説されています。ページ数は多いですが、内容が伴っているのですらすら読めます。腰を据えて学びたい方に最良の一冊となっています。