質問: ### 前提・実現したいこと 上記質問に回答しまして、「連想配列をループするにはfor...inか、あるいはMapを用いるとよい」とコメントしました。 を読むと、連想配列にはMapを用いた方がよい、という流れのようです。 であるのですが、よく考えるとMapはJSON.stringifyでJSON文字列に変換するのにひと工夫必要であるかと思うのですが、よい方法はありますか? それとも、上記質問のようなJSON.stringifyを利用することが想定される場合はMapを用いない方がいいのでしょうか。 ### 発生している問題・エラーメッセージ 特になし ### 該当のソースコード ``` 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文字列に変換するよい方法があれば教えていただきたいです。
回答: Map の key と value のペアを配列として持ち、復元時にはそれを使って Map を再現するという下記の手法はどうでしょう。 【Converting ES6 Maps to and from JSON】