iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【TypeScript】Objectの配列をスマートにDictionaryに変換したい

オブジェクトの配列をDictionaryに変換する際に、下記のようにObject.assignで変換していましたが、もっとスマートな書き方があったのでメモしておきます。

const params = [
  { key: 'hoge', value: 'value' },
  { key: 'hoge2', value: 'value' }
]
const dicParams: { [index: string]: string } = Object.assign(
  {},
  ...params.map(x => ({ [x.key]: x.value }))
)

結論

下記のようにObject.fromEntries関数で、スマートに変換することができました。Object.fromEntriesはキーと値の配列の組み合わせをDictionaryに変換できるメソッドで、今回の場合は、オブジェクトの配列を、キーと値の配列に変換して渡すことで、Object.fromEntriesを使えるようにしています。

const params = [
  { key: 'hoge', value: 'value' },
  { key: 'hoge2', value: 'value' }
]
const dicParams = Object.fromEntries(params.map(obj => [obj.key, obj.value]))

ちなみに、Object.fromEntrieses2019で利用可能なので、tsconfig.jsoncompilerOptions > libに、es2019をよしなに追加する必要があります。

参考

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com