【javascript】パラメータを取得して利用しやすい連想配列にする方法(一生もの)

パラメーターの値によって要素を出し分けたりする機会がちょこちょこあります。

その度「この場合どうする?」「あーされたらどうする?」と考えてしまうので、しばらく使い続けられるコードを作りました。

関数化しているので共通化されているjsファイルに入れておけば、使いたいページだけで利用できます。

仕様

  • 関数化しているので使いたいページで直ぐに利用できる
  • パラメーターを連想配列に格納する
  • 「a=b 」 の型になっていない パラメーターは無視
  • 「?」以降に文字列が無い場合、「false 」 が返却される

ソース

// パラメータ取得関数
function paramGet(){
	// 「?」以降の文字列を取得する(「?」以降が存在しない場合、または「?」だけの場合は空が返却される)
	var param_str = document.location.search.substring(1);
	// 値が空ではない場合だけ処理を続ける
	if( param_str ){
		// データ格納用のオブジェクトを定義する
		var result = {};
		// クエリの区切り記号 (&) で文字列を配列に分割する
		var param_list = param_str.split('&');
		// パラメーター数(「aaa=111」の形の数)だけ繰り返す
		for( var i = 0; i < param_list.length; i++ ){
			// 「aaa=bbb」の型になっていない場合はスルー
			if ( param_list[i].indexOf('=') == -1 ) continue;
			// パラメータ名とパラメータ値に分割する
			var tmp = param_list[i].split('=');
			// パーセントエンコードされた文字(日本語想定して)をデコードする
			var name = decodeURIComponent( tmp[0] );
			var value = decodeURIComponent( tmp[1] );
			// パラメータ名をキーとして連想配列に格納する
			result[name] = value;
		}
		// 連想配列を返却する
		return result;
	}
	// パラメーターが無い場合は「false」を返却する
	return false;
};

使い方

if( paramGet() ){
	/* ここに取得したパラメーターを使った処理を各 */
}

コメントがごちゃごちゃ煩いので、コピペ用にコメントなし版を用意しました↓

// パラメータ取得関数
function paramGet(){
	var param_str = document.location.search.substring(1);
	if( param_str ){
		var result = {};
		var param_list = param_str.split('&');
		for( var i = 0; i < param_list.length; i++ ){
			if ( param_list[i].indexOf('=') == -1 ) continue;
			var tmp = param_list[i].split('=');
			var name = decodeURIComponent( tmp[0] );
			var value = decodeURIComponent( tmp[1] );
			result[name] = value;
		}
		return result;
	}
	return false;
};

コメント