回答編集履歴

5

テキスト修正

2018/07/19 13:07

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -212,7 +212,7 @@
212
212
 
213
213
 
214
214
 
215
- ![イメージ説明](a01455e533ed4f1d88e07c1914033b88.png)
215
+ ![イメージ説明](5714aacce469379ceec4b9c3e24cd179.png)
216
216
 
217
217
 
218
218
 

4

テキスト修正

2018/07/19 13:07

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -242,9 +242,7 @@
242
242
 
243
243
 
244
244
 
245
- 余談ですが、マップや連想配列やハッシュといった、キーと値の組を持つデータ構造を、(表示するときではなく)
245
+ 余談ですが、マップや連想配列やハッシュといった、キーと値の組を持つデータ構造を、(表示するときではなく)プログラムの中で定義するのに、 `=>` を使う言語があります。
246
-
247
- プログラムの中で定義するのに、 `=>` を使う言語があります。
248
246
 
249
247
  たとえばRubyでは
250
248
 

3

テキスト修正

2018/07/19 12:31

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -132,11 +132,7 @@
132
132
 
133
133
  と考えたほうがよいです。
134
134
 
135
- というのも、他の JavaScriptの実行環境(=わかりやすくいうと、他の場所で動くJavaScript)の中には、
135
+ というのも、他の JavaScriptの実行環境(=わかりやすくいうと、他の場所で動くJavaScript)の中には、Mapオブジェクトを`console.log` で出力したときに、キーと値との対応を `=>` ではない記号で表しているものも、あり得るからです。
136
-
137
- Mapオブジェクトを`console.log` で出力したときに、キーと値との対応を `=>` ではない記号で
138
-
139
- 表しているものも、あり得るからです。
140
136
 
141
137
 
142
138
 

2

テキスト修正

2018/07/19 12:29

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -114,7 +114,7 @@
114
114
 
115
115
  ```
116
116
 
117
- node v9.6.1 では Mapオブジェクトを`console.log` で出力すると、
117
+ node v9.6.1 では Mapオブジェクトを console.log で出力すると、
118
118
 
119
119
 
120
120
 

1

テキスト修正

2018/07/19 12:29

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -65,3 +65,217 @@
65
65
 
66
66
 
67
67
  以上、参考になれば幸いです。
68
+
69
+
70
+
71
+ ---
72
+
73
+ **追記**
74
+
75
+
76
+
77
+ コメントから頂戴した、以下の質問に回答します。
78
+
79
+ ```
80
+
81
+ ●質問
82
+
83
+ => このアローが入ってきているのは、そういう仕様だということしょうか?
84
+
85
+ piyoがkeyで、値が3という認識で合っていますでしょうか?
86
+
87
+ ```
88
+
89
+
90
+
91
+ まず、
92
+
93
+ > piyoがkeyで、値が3という認識で合っていますでしょうか?
94
+
95
+
96
+
97
+ については、はい、その認識で合ってます。
98
+
99
+
100
+
101
+ 次に
102
+
103
+
104
+
105
+ > => このアローが入ってきているのは、そういう仕様だということしょうか?
106
+
107
+
108
+
109
+ については、そういう実装になっている、という解釈のほうがよいです。
110
+
111
+ より詳しくは、私の回答では node v9.6.1 でJSを実行したものなので、
112
+
113
+
114
+
115
+ ```
116
+
117
+ node v9.6.1 では Mapオブジェクトを`console.log` で出力すると、
118
+
119
+
120
+
121
+ Map { 'piyo' => 3, 'hoge' => 2, 'fuga' => 1 }
122
+
123
+
124
+
125
+ という風に、キーと値の対応を => を使った形式で出力するように、
126
+
127
+ console.log が作られている。
128
+
129
+ ```
130
+
131
+
132
+
133
+ と考えたほうがよいです。
134
+
135
+ というのも、他の JavaScriptの実行環境(=わかりやすくいうと、他の場所で動くJavaScript)の中には、
136
+
137
+ Mapオブジェクトを`console.log` で出力したときに、キーと値との対応を `=>` ではない記号で
138
+
139
+ 表しているものも、あり得るからです。
140
+
141
+
142
+
143
+ 例えば、以下のようなJSを含むHTMLを作ります。
144
+
145
+
146
+
147
+ ```html
148
+
149
+ <!DOCTYPE html>
150
+
151
+ <html lang="ja">
152
+
153
+ <head>
154
+
155
+ <meta charset="UTF-8">
156
+
157
+ <title>Q136707</title>
158
+
159
+ <script>
160
+
161
+ document.addEventListener("DOMContentLoaded", function(event) {
162
+
163
+ const obj = {
164
+
165
+ tasks: [
166
+
167
+ { id: 1, item: 'piyo' },
168
+
169
+ { id: 2, item: 'hoge' },
170
+
171
+ { id: 3, item: 'piyo' },
172
+
173
+ { id: 4, item: 'fuga' },
174
+
175
+ { id: 5, item: 'hoge' },
176
+
177
+ { id: 6, item: 'piyo' }
178
+
179
+ ]
180
+
181
+ };
182
+
183
+
184
+
185
+ const counts = obj.tasks.reduce(
186
+
187
+ (m, t) => m.set(t.item, (m.get(t.item) || 0) + 1),
188
+
189
+ new Map()
190
+
191
+ );
192
+
193
+
194
+
195
+ console.log(counts);
196
+
197
+ });
198
+
199
+ </script>
200
+
201
+ </head>
202
+
203
+ <body>
204
+
205
+
206
+
207
+ </body>
208
+
209
+ </html>
210
+
211
+ ```
212
+
213
+
214
+
215
+ そして、上記HTMLをMac版Firefox の最新バージョン(v61.0.1)で表示し、開発ツールを開いたところが以下です。
216
+
217
+
218
+
219
+ ![イメージ説明](a01455e533ed4f1d88e07c1914033b88.png)
220
+
221
+
222
+
223
+ 上記で分かるとおり、`=>` ではなく、 `→` が使われているので、
224
+
225
+
226
+
227
+ ```
228
+
229
+ Mac版Firefox の最新バージョン(v61.0.1)に組み込まれたJavaScript処理系では、
230
+
231
+ Mapオブジェクトを console.log で表示すると、
232
+
233
+
234
+
235
+ Map(3) { piyo → 3, hoge → 2, fuga → 1 }
236
+
237
+
238
+
239
+ と表示するように、 console.log が作られている。
240
+
241
+ ```
242
+
243
+
244
+
245
+ と言えます。
246
+
247
+
248
+
249
+ 余談ですが、マップや連想配列やハッシュといった、キーと値の組を持つデータ構造を、(表示するときではなく)
250
+
251
+ プログラムの中で定義するのに、 `=>` を使う言語があります。
252
+
253
+ たとえばRubyでは
254
+
255
+
256
+
257
+ ```ruby
258
+
259
+ counts = { 'piyo'=>3, 'hoge'=>2, 'fuga'=>1 }
260
+
261
+ ```
262
+
263
+
264
+
265
+ と書きますし、PHPでは以下です。
266
+
267
+
268
+
269
+ ```php
270
+
271
+ $counts = [ 'piyo'=>3, 'hoge'=>2, 'fuga'=>1 ];
272
+
273
+ ```
274
+
275
+
276
+
277
+ ですので、 JavaScript で Mapオブジェクトを console.log で出力したとき
278
+
279
+ `=>` が使われるのは、RubyやPHPを知っている人にとっては、自然な(というか見慣れた)
280
+
281
+ 感じがすることでしょう。