URLSearchParams

URLSearchParams インターフェイスは URL のクエリー文字列の操作に役立つメソッドを定義します。

URLSearchParams を実装するオブジェクトは 直接 for...of で使うことができます。例えば次の 2行は等価です。

for (const [key, value] of mySearchParams) {}
for (const [key, value] of mySearchParams.entries()) {}
註: この機能は Web Workers 内で利用可能です。

コンストラクター

URLSearchParams()
URLSearchParams オブジェクトを返すコンストラクターです。

メソッド

URLSearchParams.append()
指定されたキーと値のペアを新しい検索パラメーターとして追加します。
URLSearchParams.delete()
指定された検索パラメーターとその値を、検索パラメーターのリストからすべて削除します。
URLSearchParams.entries()
このオブジェクトに含まれるすべてのキーと値のペアを列挙するための iterator を返します。
URLSearchParams.forEach()
コールバック関数を介して、このオブジェクトに含まれるすべての値を列挙します。
URLSearchParams.get()
指定された検索パラメーターに対応する最初の値を返します。
URLSearchParams.getAll()
指定された検索パラメーターに対応するすべての値を返します。
URLSearchParams.has()
指定された検索パラメーターが存在するかを表す Boolean 値を返します。
URLSearchParams.keys()
このオブジェクトに含まれるすべてのキーと値のペアのキーを列挙する iterator を返します。
URLSearchParams.set()
指定された検索パラメーターに対応する値を設定します。複数の値が存在していた場合、それらは削除されます。
URLSearchParams.sort()
すべてのキーと値のペアを、キーを基準にソートします。
URLSearchParams.toString()
URL で使用するのに適したクエリー文字列を返します。
URLSearchParams.values()
このオブジェクトに含まれるすべてのキーと値のペアのを列挙する iterator を返します。

var paramsString = "q=URLUtils.searchParams&topic=api";
var searchParams = new URLSearchParams(paramsString);

// 検索パラメーターを列挙する
for (let p of searchParams) {
  console.log(p);
}

searchParams.has("topic") === true; // true
searchParams.get("topic") === "api"; // true
searchParams.getAll("topic"); // ["api"]
searchParams.get("foo") === null; // true
searchParams.append("topic", "webdev");
searchParams.toString(); // "q=URLUtils.searchParams&topic=api&topic=webdev"
searchParams.set("topic", "More webdev");
searchParams.toString(); // "q=URLUtils.searchParams&topic=More+webdev"
searchParams.delete("topic");
searchParams.toString(); // "q=URLUtils.searchParams"

コラム

URLSearchParams コンストラクターは完全な URL をパースしません。ただし、先頭に ? が存在すれば、読み飛ばします。

var paramsString1 = "http://example.com/search?query=%40";
var searchParams1 = new URLSearchParams(paramsString1);

searchParams1.has("query"); // false 
searchParams1.has("http://example.com/search?query"); // true

searchParams1.get("query"); // null
searchParams1.get("http://example.com/search?query"); // "@" (equivalent to decodeURIComponent('%40'))

var paramsString2 = "?query=value";
var searchParams2 = new URLSearchParams(paramsString2);
searchParams2.has("query"); // true 

var url = new URL("http://example.com/search?query=%40");
var searchParams3 = new URLSearchParams(url.search);
searchParams3.has("query") // true

仕様書

仕様書 状態 備考
URL
URLSearchParams の定義
現行の標準 初回定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
URLSearchParamsChrome 完全対応 49Edge 完全対応 17Firefox 完全対応 29
補足
完全対応 29
補足
補足 Prior to version 57 single quotes in URLs were escaped (see bug 1386683).
IE 未対応 なしOpera 完全対応 36Safari 完全対応 10.1WebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 29
補足
完全対応 29
補足
補足 Prior to version 57 single quotes in URLs were escaped (see bug 1386683).
Opera Android 完全対応 36Safari iOS 完全対応 10.3Samsung Internet Android 完全対応 5.0
URLSearchParams() constructorChrome 完全対応 49Edge 完全対応 17Firefox 完全対応 29IE 未対応 なしOpera 完全対応 36Safari 完全対応 10.1WebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 29Opera Android 完全対応 36Safari iOS 完全対応 10.3Samsung Internet Android 完全対応 5.0
appendChrome 完全対応 49Edge 完全対応 17Firefox 完全対応 29IE 未対応 なしOpera 完全対応 36Safari 完全対応 10.1WebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 29Opera Android 完全対応 36Safari iOS 完全対応 10.3Samsung Internet Android 完全対応 5.0
deleteChrome 完全対応 49Edge 完全対応 17Firefox 完全対応 29IE 未対応 なしOpera 完全対応 36Safari 部分対応 一部
補足
部分対応 一部
補足
補足 Removing a non-existent query parameter doesn't remove ? from the URL. See bug 193022.
WebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 29Opera Android 完全対応 36Safari iOS 部分対応 一部
補足
部分対応 一部
補足
補足 Removing a non-existent query parameter doesn't remove ? from the URL. See bug 193022.
Samsung Internet Android 完全対応 5.0
entriesChrome 完全対応 49Edge 完全対応 17Firefox 完全対応 44IE 未対応 なしOpera 完全対応 36Safari 完全対応 ありWebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 44Opera Android 完全対応 36Safari iOS 完全対応 ありSamsung Internet Android 完全対応 5.0
forEachChrome 完全対応 49Edge 完全対応 17Firefox 完全対応 44IE 未対応 なしOpera 完全対応 36Safari 完全対応 ありWebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 44Opera Android 完全対応 36Safari iOS 完全対応 ありSamsung Internet Android 完全対応 5.0
getChrome 完全対応 49Edge 完全対応 17Firefox 完全対応 29IE 未対応 なしOpera 完全対応 36Safari 完全対応 ありWebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 29Opera Android 完全対応 36Safari iOS 完全対応 ありSamsung Internet Android 完全対応 5.0
getAllChrome 完全対応 49Edge 完全対応 17Firefox 完全対応 29IE 未対応 なしOpera 完全対応 36Safari 完全対応 ありWebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 29Opera Android 完全対応 36Safari iOS 完全対応 ありSamsung Internet Android 完全対応 5.0
hasChrome 完全対応 49Edge 完全対応 17Firefox 完全対応 29IE 未対応 なしOpera 完全対応 36Safari 完全対応 ありWebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 29Opera Android 完全対応 36Safari iOS 完全対応 ありSamsung Internet Android 完全対応 5.0
keysChrome 完全対応 49Edge 完全対応 17Firefox 完全対応 44IE 未対応 なしOpera 完全対応 36Safari 完全対応 ありWebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 44Opera Android 完全対応 36Safari iOS 完全対応 ありSamsung Internet Android 完全対応 5.0
setChrome 完全対応 49Edge 完全対応 17Firefox 完全対応 29IE 未対応 なしOpera 完全対応 36Safari 完全対応 ありWebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 29Opera Android 完全対応 36Safari iOS 完全対応 ありSamsung Internet Android 完全対応 5.0
sortChrome 完全対応 61Edge 完全対応 17Firefox 完全対応 54IE 未対応 なしOpera 完全対応 48Safari 完全対応 ありWebView Android 完全対応 61Chrome Android 完全対応 61Firefox Android 完全対応 54Opera Android 完全対応 45Safari iOS 完全対応 ありSamsung Internet Android 完全対応 8.0
toStringChrome 完全対応 49Edge 完全対応 17Firefox 完全対応 29IE 未対応 なしOpera 完全対応 36Safari 完全対応 ありWebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 29Opera Android 完全対応 36Safari iOS 完全対応 ありSamsung Internet Android 完全対応 5.0
valuesChrome 完全対応 49Edge 完全対応 17Firefox 完全対応 44IE 未対応 なしOpera 完全対応 36Safari 完全対応 ありWebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 44Opera Android 完全対応 36Safari iOS 完全対応 ありSamsung Internet Android 完全対応 5.0

凡例

完全対応  
完全対応
部分対応  
部分対応
未対応  
未対応
実装ノートを参照してください。
実装ノートを参照してください。

関連情報