クエリ文字列(URLパラメーター)を作成したり操作する
クエリ文字列(URLパラメーター)を作成したり操作をするには、URLSearchParams
オブジェクトを使用します。
URLSearchParamsオブジェクトは、クエリ文字列(URLパラメーター)を新規に作成したり、クエリ文字列(URLパラメーター)を解析して、編集や取得などの操作を行うことができます。
- ※ IEは全てのバージョンに対応していません。
作成または解析
作成または解析するには、URLSearchParams
オブジェクトを使用します。
構文
ES5
var obj = new URLSearchParams([queryString]);
ES6以降
let obj = new URLSearchParams([queryString]);
引数
引数名 | 型 | 説明 | |
---|---|---|---|
第一引数 | queryString | string|object | 作成するキーと値のペアのオブジェクトまたは解析を行うクエリ文字列(URLパラメーター)。 解析する文字列で指定する場合は先頭に「?」が付いていても問題ない。 ただし、必ずクエリ文字列(URLパラメーター)だけを指定する必要があり、URLやパス、ハッシュフラグメントなどを含むと正しい結果を得ることができない。 |
戻り値
生成されたインスタンスのオブジェクトを返します。
サンプルコード
JavaScript (ES5)
// 新規のクエリ文字列(URLパラメーター)を作成(空)
var params = new URLSearchParams();
// 新規のクエリ文字列(URLパラメーター)を作成(初期値を設定)
var params = new URLSearchParams({
foo : 'abc',
bar : 123
});
// 文字列から解析(任意の文字列から)
var params = new URLSearchParams('?foo=abc&bar=123');
// 文字列から解析(現在ページから)
var params = new URLSearchParams(location.search);
JavaScript (ES6以降)
// 新規のクエリ文字列(URLパラメーター)を作成(空)
let params = new URLSearchParams();
// 新規のクエリ文字列(URLパラメーター)を作成(初期値を設定)
let params = new URLSearchParams({
foo : 'abc',
bar : 123
});
// 文字列から解析(任意の文字列から)
let params = new URLSearchParams('?foo=abc&bar=123');
// 文字列から解析(現在ページから)
let params = new URLSearchParams(location.search);
キーが存在するか判定
キーが存在するか判定するには、URLSearchParams.has
メソッドを使用します。
構文
ES5
var result = URLSearchParams.has(key);
ES6以降
let result = URLSearchParams.has(key);
引数
引数名 | 型 | 説明 | |
---|---|---|---|
引数 必須 |
key | string | 検索するキー。 |
戻り値
見つかったらtrue
、見つからなかったらfalse
を返します。
サンプルコード
JavaScript (ES5)
var params = new URLSearchParams('?foo=abc&bar=123');
alert(params.has('bar')); // true
JavaScript (ES6以降)
let params = new URLSearchParams('?foo=abc&bar=123');
console.log(params.has('bar')); // true
キーから値を取得
キーから値を取得するには、URLSearchParams.get
メソッドを使用します。
構文
ES5
var result = URLSearchParams.get(key);
ES6以降
let result = URLSearchParams.get(key);
引数
引数名 | 型 | 説明 | |
---|---|---|---|
引数 必須 |
key | string | 検索するキー。 |
戻り値
見つかったら対象の値、見つからなかった場合はnullを返します。
複数の同じキーが存在していた場合は、最初に一致したキーの値を返します。
サンプルコード
JavaScript (ES5)
var params = new URLSearchParams('?foo=abc&bar=123');
alert(params.get('bar')); // 123
JavaScript (ES6以降)
let params = new URLSearchParams('?foo=abc&bar=123');
console.log(params.get('bar')); // 123
キーから値を全て取得
キーから値を全て取得するには、URLSearchParams.getAll
メソッドを使用します。
構文
ES5
var result = URLSearchParams.getAll(key);
ES6以降
let result = URLSearchParams.getAll(key);
引数
引数名 | 型 | 説明 | |
---|---|---|---|
引数 必須 |
key | string | 検索するキー。 |
戻り値
見つかったら対象の全ての値を配列で、見つからなかった場合は空の配列を返します。
サンプルコード
JavaScript (ES5)
var params = new URLSearchParams('?foo=abc&bar=123&foo=def');
alert(params.getAll('foo').join(', ')); // abc, def
JavaScript (ES6以降)
let params = new URLSearchParams('?foo=abc&bar=123&foo=def');
console.log(params.getAll('foo')); // ['abc', 'def']
キーと値を繰り返す
キーと値を繰り返すには、URLSearchParams.forEach
メソッドを使用します。
構文
URLSearchParams.forEach(callback);
引数
引数名 | 型 | 説明 | |
---|---|---|---|
引数 必須 |
callback | function | 1つ1つのキーと値のペアごとに処理を実行する関数。 関数の引数は第一引数に値、第二引数にキーを取得することができる。
|
サンプルコード
JavaScript (ES5)
var params = new URLSearchParams('?foo=abc&bar=123');
var str = '';
params.forEach(function(value, key) {
str += 'key: ' + key + '、value: ' + value;
});
alert(str);
JavaScript (ES6以降)
let params = new URLSearchParams('?foo=abc&bar=123');
params.forEach((value, key) => {
console.log(`key: ${key}、value: ${value}`);
});
キーと値を追加
キーと値を追加するには、URLSearchParams.append
メソッドを使用します。
構文
URLSearchParams.append(key, value);
引数
引数名 | 型 | 説明 | |
---|---|---|---|
引数 必須 |
key | string | 設定するキー。 |
引数 必須 |
value | string | 設定する値。 |
サンプルコード
JavaScript (ES5)
var params = new URLSearchParams('foo=abc');
params.append('bar', 123);
params.append('foo', 'def');
JavaScript (ES6以降)
let params = new URLSearchParams('foo=abc');
params.append('bar', 123);
params.append('foo', 'def');
値を設定あるいは上書き
値を設定あるいは上書きするには、URLSearchParams.set
メソッドを使用します。
設定するキーが既に存在していた場合は上書きされ、存在していない場合は追加されます。
構文
URLSearchParams.set(key, value);
引数
引数名 | 型 | 説明 | |
---|---|---|---|
引数 必須 |
key | string | 設定するキー。 |
引数 必須 |
value | string | 設定する値。 |
サンプルコード
JavaScript (ES5)
var params = new URLSearchParams('foo=abc');
params.set('bar', 123);
params.set('foo', 'def');
JavaScript (ES6以降)
let params = new URLSearchParams('foo=abc');
params.set('bar', 123);
params.set('foo', 'def');
キーを削除
キーを削除するには、URLSearchParams.delete
メソッドを使用します。
構文
URLSearchParams.delete(key);
引数
引数名 | 型 | 説明 | |
---|---|---|---|
引数 必須 |
key | string | 削除する対象のキー。 |
戻り値
サンプルコード
JavaScript (ES5)
var params = new URLSearchParams('?foo=abc&bar=123');
params.delete('foo');
JavaScript (ES6以降)
let params = new URLSearchParams('?foo=abc&bar=123');
params.delete('foo');
全てのキーを取得
全てのキーを取得するには、URLSearchParams.keys
メソッドを使用します。
構文
ES5
var keys = URLSearchParams.keys();
ES6以降
let keys = URLSearchParams.keys();
戻り値
見つかったすべてのキーをイテレーターで返します。
サンプルコード
JavaScript (ES5)
var params = new URLSearchParams('?foo=abc&bar=123');
var str = '';
for (var key of params.keys()) {
str += key;
}
alert(str);
JavaScript (ES6以降)
let params = new URLSearchParams('?foo=abc&bar=123');
for (let key of params.keys()) {
console.log(key);
}
全ての値を取得
全ての値を取得するには、URLSearchParams.values
メソッドを使用します。
構文
ES5
var values = URLSearchParams.values();
ES6以降
let values = URLSearchParams.values();
戻り値
見つかったすべての値をイテレーターで返します。
サンプルコード
JavaScript (ES5)
var params = new URLSearchParams('?foo=abc&bar=123');
var str = '';
for (var val of params.values()) {
str += val;
}
alert(str);
JavaScript (ES6以降)
let params = new URLSearchParams('?foo=abc&bar=123');
for (let val of params.values()) {
console.log(val);
}
全てを結合して1つの文字列として取得
全てを結合して1つの文字列として取得するには、URLSearchParams.toString
メソッドを使用します。
構文
ES5
var result = URLSearchParams.toString();
ES6以降
let result = URLSearchParams.toString();
戻り値
結合されたクエリ文字列(URLパラメーター)を返します。
先頭に「?」は付きません。
サンプルコード
JavaScript (ES5)
var params = new URLSearchParams({
foo : 'abc'
});
params.append('bar', 123);
params.append('baz[]', 'aaa');
params.append('baz[]', 'bbb');
alert(params.toString()); // foo=abc&bar=123&baz%5B%5D=aaa&baz%5B%5D=bbb
JavaScript (ES6以降)
let params = new URLSearchParams({
foo : 'abc'
});
params.append('bar', 123);
params.append('baz[]', 'aaa');
params.append('baz[]', 'bbb');
console.log(params.toString()); // foo=abc&bar=123&baz%5B%5D=aaa&baz%5B%5D=bbb