如何将数组转换为特定格式的对象?

gam*_*y07 1 javascript node.js reactjs

虽然这是一个常见问题,但我找不到任何线索来获得预期的结果。所以问题来了。我有以下数组:

[
    [ 'a' ]
    [ 'a', 'b' ]
    [ 'a', 'c' ]
    [ 'a', 'c', 'd' ]
    [ 'a', 'c', 'd', 'e' ]
]
Run Code Online (Sandbox Code Playgroud)

我想要的最终结果是这样的对象:

{
  a: {
    b: {},
    c: { d: { e: {} } }
  }
}
Run Code Online (Sandbox Code Playgroud)

我不明白哪种方法会更好地获得这个结果以及如何实现它。

Nin*_*olz 5

您需要一个双重归约,一个用于外部数组,另一个用于键和嵌套对象。

var data = [['a'], ['a', 'b'], ['a', 'c'], ['a', 'c', 'd'], ['a', 'c', 'd', 'e']],
    result = data.reduce((r, keys) => {
        keys.reduce((o, k) => o[k] = o[k] || {}, r);
        return r;
    }, {});

console.log(result);
Run Code Online (Sandbox Code Playgroud)