LoginSignup
0
1

More than 5 years have passed since last update.

javascriptでURLクエリーを簡単に取得してみた

Last updated at Posted at 2019-01-11
  • やり方は色々あったが、わかりづらかったので、自分なりに簡単な方法を考えてみた。
  • いつも誰かのコピペしてたので、自分で書けるようにしたかった
  • for文よりforEachの方が好き派⇦初心者の考え
  • forEachが好きとか言ってたら,forEachは最終手段らしい(なるべく,map,filter,reduceなどを使うべし)
    参照: JavaScript で forEach を使うのは最終手段
  • とりあえず,foreachで書いてみた
main.js
function getParams(){
    // クエリーparamは?からなので、まず?で分割
    // paramが複数ある場合のため&で分割
    var params = location.search.split('?')[1].split('&');
    // オブジェクトで取れるようにする
    var data = {};
    params.forEach(function(param){
        // =でkeyとvalに分ける
        var key = param.split('=')[0];
        var val = param.split('=')[1];
        data[key] = val;
    });
    return data;
}

コメントにあるようforEachではなく,reduceで書いた方が良いとのこと.

reduceで修正した

reduce.js
function getParams(){
    // クエリーparamは?からなので、まず?で分割
    // paramが複数ある場合のため&で分割
    var params = location.search.split('?')[1].split('&');
    // reduceで生成したオブジェクトを直接返す
    return params.reduce(function(data, param) {
        var key = param.split('=')[0];
        var val = param.split('=')[1];
        data[key] = val;
        return data;
    }, {});
}

reduceを使うことでdataの宣言がいらなくなった.(reduceの第二引数でinitialValueとして{}を入れた)

配列のデータを集計するような場合にはreduceを使います。

なるほど..配列から何か新しいデータを生成するときはreduceとかmapの方が良いみたいだな
ということで,なるべくforEach使わないようにしよ

以上。ご自由にお使いください。

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1