Mapのオブジェクト化 コードゴルフ
#コードゴルフ
code: Usage.js
...map.reduce((o,k,v)=>(ok=v)?o:o,{})
代入しつつ、代入「先」オブジェクトを返却するために、条件分岐して、分岐の両方に代入先オブジェクトを指定しています。
このパターンは、代入しつつその返り値を握りつぶす処理として、コードゴルフで重宝しています。
余談ですが、近い発想で[...map].map(function(k,v){this[k]=v},{})を思いつきます。こちらは僅かに短い代わりに、代入のあと結果を取り出す方法がないです。
code: sample.js
...new Map(Object.entries(location)).reduce((o,k,v)=>(ok=v)?o:o,{})
{
"ancestorOrigins": {},
"href": "https://developer.mozilla.org/ja/docs/Web/API/EventSource",
"origin": "https://developer.mozilla.org",
"protocol": "https:",
"host": "developer.mozilla.org",
"hostname": "developer.mozilla.org",
"port": "",
"pathname": "/ja/docs/Web/API/EventSource",
"search": "",
"hash": ""
}
locationオブジェクトが復元できていますね。