JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptでURLをホスト名とパスに解析する方法

Window.location は読み取り専用のプロパティで、現在のドキュメントの位置情報を保持する Location オブジェクトを返します。このオブジェクトを利用することで、URL をホスト名やパスなどに簡単に分解(解析)できます。

Location インターフェースは、そのオブジェクトがリンクされている場所(URL)を表します。location オブジェクトには、以下のような便利なプロパティが用意されています。

Locationオブジェクトの主なプロパティ

Location.href

URL 全体を格納する DOMString です。この値を変更すると、関連付けられたドキュメントが新しいページへ遷移します。関連ドキュメントと異なるオリジンの値を設定することも可能です。

Location.protocol

URL のプロトコルスキームです。末尾のコロン「:」も含まれます(例:"https:")。

Location.host

ホスト名・コロン「:」・ポート番号を組み合わせた文字列です(例:"www.example.com:8080")。

Location.hostname

URL のドメイン名(ホスト名)です。ポート番号は含まれません。

Location.port

URL のポート番号です。

Location.pathname

先頭の「/」から始まる URL のパス部分です。

Location.search

「?」に続くパラメータ(クエリ文字列)です。モダンブラウザでは、URLSearchParams や URL.searchParams を使うことで、クエリ文字列からパラメータを簡単に取り出せます。

Location.hash

「#」に続くフラグメント識別子(アンカー部分)です。

Location.username

ドメイン名より前に指定されたユーザー名です。

Location.password

ドメイン名より前に指定されたパスワードです。

使用例

実際のコードは次のようになります。

let hostname = location.hostname
let path = location.pathname
console.log(hostname)
console.log(path)

たとえば、次の URL にアクセスした状態で実行した場合:

https://www.tutorialspoint.com/ajax/index.htm

出力結果

コンソールには以下のように表示されます。

www.tutorialspoint.com
/ajax/index.htm

補足:任意のURL文字列を解析したい場合

現在開いているページではなく、任意の URL 文字列を解析したいときは、URL コンストラクタを使うと便利です。

const url = new URL('https://www.tutorialspoint.com/ajax/index.htm');
console.log(url.hostname); // www.tutorialspoint.com
console.log(url.pathname); // /ajax/index.htm

このように、location オブジェクトや URL オブジェクトのプロパティを活用すれば、複雑な文字列処理を行わずとも URL の各要素を安全かつ簡潔に取得できます。

  1. JavaScriptでURLオブジェクトを作成する方法をわかりやすく解説

    JavaScriptでは、標準組み込みのURLコンストラクタを使うことで、URL文字列からURLオブジェクトを簡単に生成できます。URLオブジェクトを作成すると、プロトコル(protocol)やホスト名(host)、パス(pathname)など、URLを構成する各要素に個別にアクセスできるようになるため、URLの解析や操作がとても便利になります。 URLオブジェクトの作成例 以下は、JavaScriptでURLオブジェクトを作成し、ボタンをクリックするとその各プロパティを画面に表示するサンプルコードです。 <!DOCTYPE html> <html lang="

  2. JavaScriptでJSON配列をキーごとにグループ化して解析する方法

    この記事では、特定のキーの値に基づいてJSON配列のデータをグループ化し、新しい構造のJSONとして出力する方法を解説します。 課題の概要 例えば、次のようなJSON配列があるとします。 const arr = [{ data: [ { W: 1, A1: 123 }, { W: 1, A1: 456 }, { W: 2, A1: 4578 }, { W: 2, A1: 2423 }, { W: 2, A1: 2432 }, { W: 2, A1: 24324 } ] }]; ここで求められているのは、キー「W」の値ごとにオブジェク