回答編集履歴

2

追記2

2020/03/20 11:58

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

test CHANGED
@@ -67,3 +67,7 @@
67
67
  1. input[type=checkbox]のような keyが重複されるケースには対応していません
68
68
 
69
69
  2. デバッグしてません
70
+
71
+
72
+
73
+ ご質問にある ``hoge.com?test`` のような ``=`` がないパターンにも対応していませんが、それぞれの for ループ内を弄れば対応できるのではないでしょうか。

1

追記

2020/03/20 11:58

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

test CHANGED
@@ -7,3 +7,63 @@
7
7
 
8
8
 
9
9
  MDN [URLSearchParams](https://developer.mozilla.org/ja/docs/Web/API/URLSearchParams)
10
+
11
+
12
+
13
+ ----
14
+
15
+ IEでは 文字列 オブジェクトの相互変換を考える必要があります。
16
+
17
+
18
+
19
+ ``?param=value&param2=value2&...`` のようなフォーマットは
20
+
21
+ ``paramN``, ``valueN`` 部分が URL 用にエンコードされているものとして考える。
22
+
23
+
24
+
25
+ コードスニペットは次のような感じでしょうか。
26
+
27
+ ```javascript
28
+
29
+ function parseQueryString ( qs ) {
30
+
31
+ var rslt = {};
32
+
33
+ var pairs = qs.substring(1).split("&");
34
+
35
+ for( var i=0,l=pairs.length; i<l; ++i ) {
36
+
37
+ pair = pairs[i].split("=");
38
+
39
+ rslt[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
40
+
41
+ }
42
+
43
+ return rslt
44
+
45
+ }
46
+
47
+
48
+
49
+ function stringifyQueryString ( oj ) {
50
+
51
+ var rslt = [];
52
+
53
+ for( var key in oj ) {
54
+
55
+ rslt.push( encodeURIComponent(key) + "=" + encodeURIComponent(oj[key]) );
56
+
57
+ }
58
+
59
+ return "?" + (rslt.join("&"));
60
+
61
+ }
62
+
63
+ ```
64
+
65
+ 注意点は
66
+
67
+ 1. input[type=checkbox]のような keyが重複されるケースには対応していません
68
+
69
+ 2. デバッグしてません