JavaScript:不使用`eval'将平面数组转换为树状结构

时间:2018-12-21 14:47:41

标签: javascript arrays javascript-objects

我有一个像["aaa","aaa","bbb","ccc"]这样的数组。

我需要将其转换为如下形式:

{ "aaa" :
  { "aaa" :
    { "bbb" :
      { "ccc" : 1 }
    }
  }
}

我知道eval可以解决问题,但是有没有更漂亮的解决方案?

感谢您阅读我的帖子。

1 个答案:

答案 0 :(得分:5)

使用Array.reduceRight()。在每次迭代中,返回一个对象,其前一个结果作为当前属性的值:

const arr = ["aaa","aaa","bbb","ccc"]

const result = arr.reduceRight((r, s) => ({ [s]: r }), 1)

console.log(result)