前提・実現したいこと
- 以下のようなオブジェクトを持つを配列から、、、
[ { key1: 'A', key2: 'AA', key3: 'AAA', }, { key1: 'B', key2: 'BB', key3: 'BBB', } ]
- 以下のようなネストの深いオブジェクトを作りたいと考えています。
{ "A": { "AA": { "AAA": 'OK' } }, "B": { "BB": { "BBB": 'OK' } } }
発生している問題・エラーメッセージ
- reduce関数を使用して、以下のような方針で作成しようと考えました。
ts
1const before = [ 2 { 3 key1: 'A', 4 key2: 'AA', 5 key3: 'AAA', 6 }, 7 { 8 key1: 'B', 9 key2: 'BB', 10 key3: 'BBB', 11 } 12] 13 14const after1 = before.reduce((acc, cur) => ({ 15 ...acc, 16 [cur.key1]: { 17 ...acc[cur.key1], 18 [cur.key2]: 'OK' 19 } 20}), {}) 21 22 23// const after2 = before.reduce((acc, cur) => ({ 24// ...acc, 25// [cur.key1]: { 26// ...acc[cur.key1], 27// [cur.key2]: { 28// ...acc[cur.key1][cur.key2], 29// [cur.key3]: 'OK' 30// } 31// } 32// }), {})
- after1の階層までならうまくいくのですが、after2のように、階層が深くなるとなぜかエラーになります。
- なぜエラーになるのででしょうか?
- また、解決方法が知りたいです。
- もしくは、他のアプローチでの作成方法とかご存知であれば教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/07 05:31