質問編集履歴

1 追記依頼等を受け追記

Lhankor_Mhy

Lhankor_Mhy score 9457

2017/02/16 14:27  投稿

MapをJson文字列にする方法について
###前提・実現したいこと
[https://teratail.com/questions/65726](https://teratail.com/questions/65726)
上記質問に回答しまして、「連想配列をループするにはfor...inか、あるいはMapを用いるとよい」とコメントしました。
[http://qiita.com/raccy/items/bf590d3c10c3f1a2846b#no_entry_sign-forin](http://qiita.com/raccy/items/bf590d3c10c3f1a2846b#no_entry_sign-forin)
[http://qiita.com/raccy/items/bf590d3c10c3f1a2846b#no_entry_sign-delete](http://qiita.com/raccy/items/bf590d3c10c3f1a2846b#no_entry_sign-delete)
を読むと、連想配列にはMapを用いた方がよい、という流れのようです。
であるのですが、よく考えるとMapはJSON.stringifyでJSON文字列に変換するのにひと工夫必要であるかと思うのですが、よい方法はありますか?
それとも、上記質問のようなJSON.stringifyを利用することが想定される場合はMapを用いない方がいいのでしょうか。
###発生している問題・エラーメッセージ
特になし
###該当のソースコード
```javascript
JSON.stringify( Array.from(map).reduce( (sum, [v,k]) => (sum[v]=k, sum), {} ) );
```
###試したこと
ぱっと思いついたコードは上記のような感じなんですが、ちょっと意図が分かりにくい感じですし、ディープにやろうとするとそこそこ面倒そうです。
中級者の方々なら大丈夫なんでしょうけれど、ちょっと初心者にはハードルが高いような?
中級者の方々なら大丈夫なんでしょうけれど、ちょっと初心者にはハードルが高いような?
###自分の考え
tomohiro_obaraさんより「自分の考えを書くように」という旨の追記依頼をいただきましたので別項を設けて記述します。
私の意見としては、JSON.stringifyがMapに対応していないこと、特に階層の深いMapの場合、JSONのシリアライズ・パースが手間であることから、初心者であっても、MapよりObjectを利用し、走査する場合はObject.keysとfor...ofを用いる方が、現実的なのではないかと感じました。
それはそれとして、MapをJSON文字列に変換するよい方法があれば教えていただきたいです。
  • JavaScript

    20936 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る