javascript 配列を多次元構造の連想配列にしたい


`["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]

よろしくお願いします。




`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]




`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]

