60996


`["Japan","Tokyo","Chiyoda","Kanda","1","佐藤"]` という配列を  
`{"Japan":{"Tokyo":{"Chiyoda":{"Kanda":{"1":"佐藤"}}}}}` という風にしたいです。

以下のようにやってみましたが、ダメでした。

[code]

    n = {}
    data = [1,2,3,4,5,6,7,8,9]
    h = data.reduce((pre, cur) => {
      n[cur] = pre//
      return n
    })
    
    console.log(h)
    
[/code]

よろしくお願いします。


CC BY-SA 4.0
2019-12-01T15:02:15.903
60991
2019-12-01T18:31:01.030
2019-12-01T16:43:09.553
3060
32180
question
javascript
javascript 配列を多次元構造の連想配列にしたい


`reduceRight` 関数を使用することでそのようなことが行えます。

[code]

    const data = ["Japan", "Tokyo", "Chiyoda", "Kanda", "1", "佐藤"];
    
    console.log(
      data.reduceRight((value, key) => ({
        [key]: value
      }))
    );
[/code]

方針としては上記コードと同様ですが、単純に `for` 文を使用して配列を後ろから走査するだけでも同様のことが実現出来ます。

[code]

    const data = ["Japan", "Tokyo", "Chiyoda", "Kanda", "1", "佐藤"];
    let result = {};
    
    for (let i = length = data.length - 2; i >= 0; i--) {
      result = i < length ? {[data[i]]: result} : {[data[i]]: data[i + 1]};
    }
    
    console.log(result);
[/code]


CC BY-SA 4.0
2019-12-01T18:31:01.030
60996
2019-12-01T18:31:01.030
32986
60991
answer