ラボ > Javascript関連:配列、オブジェクト

js PHPの「http_build_query()」みたいなヤツ

javascriptでPHPの「http_build_query()」みたいな感じでキーバリューな配列からgetパラメータのついたURLを作りたい

作成日:2022-11-07, 更新日:2024-02-08

やりたいこと

PHPの「http_build_query()」みたいな感じでキーバリューな配列からgetパラメータのついたURLを作りたい
でもPHPの「http_build_query()」みたいに「セパレータ(&)を変えたい」とかはなく、シンプルな状態で構わない。

サンプル

  • getパラメータだけ or URLのどっちが必要になるコトが多いかってコトを考えると悩ましいのでどっちでも対応できるようにしておく
  • getパラメータ付きURLを渡してもOKなようにしておく(※すでにあるキーなら値を書換え)
let http_build_query = function(getKeyVal, str_url) {
  let flgResponse_href = true;
  if ( str_url == undefined ) {
    str_url = 'https://example.com'; // インスタンス作成用にダミーURL
    flgResponse_href = false;
  }

  let obj_url = new URL(str_url);
  for ( let key in getKeyVal) {
    if( !obj_url.searchParams.get(key) ) { // 現在のURLに追加したいパラメータが存在しないとき
      obj_url.searchParams.append(key, getKeyVal[key]); // 追加
    }
    else {
      obj_url.searchParams.set(key, getKeyVal[key]); // 書換え
    }
  }

  if ( flgResponse_href ) {
    return obj_url.href; // httpから始まるURL
  }
  else {
    return obj_url.search; // 「?xx=aa&yy=bb」のgetパラメータ
  }
}

関連項目