Javascript JS:在树中按年和月对日期进行分组的算法

Javascript JS:在树中按年和月对日期进行分组的算法,javascript,algorithm,tree,Javascript,Algorithm,Tree,我有一个这样的日期列表: 2019-12-15 2020-01-15 2020-01-23 我想把它们放在这样的树上: 2019 |__12 |__15 2020 |__01 |__15 |__23 是否有一种算法可以帮助实现这一点,并具有良好的性能?因为日期列表可能会越来越大,我担心会遇到解析算法缓慢的问题。 提前感谢。您可以选择一个对象并通过检查属性获取嵌套对象的零件,然后选择此属性或添加一个新对象作为属性 var数据=['2019-12-15',

我有一个这样的日期列表:

2019-12-15
2020-01-15
2020-01-23
我想把它们放在这样的树上:

2019
  |__12
     |__15
2020
  |__01
     |__15
     |__23
是否有一种算法可以帮助实现这一点,并具有良好的性能?因为日期列表可能会越来越大,我担心会遇到解析算法缓慢的问题。

提前感谢。

您可以选择一个对象并通过检查属性获取嵌套对象的零件,然后选择此属性或添加一个新对象作为属性

var数据=['2019-12-15','2020-01-15','2020-01-23'],
树=数据。减少((t,s)=>{
s、 分裂('-')。减少((o,k)=>o[k]=o[k]|{},t);
返回t;
}, {});
控制台日志(树)

.as控制台包装{max height:100%!important;top:0;}
到目前为止您尝试了什么?你能把你的信寄出去吗?日期已经定好了吗?@aloisdgmovingtocodidact.com实际上什么都没有,我在考虑做循环之类的事情(传统的方式),但我想对此有新的想法。@SlimenTN编写基本代码。编写测试。测量时间与巨大的案件。循环是你的瓶颈吗?对好吧期待改进。@aloisdgmovingtocodidact.com是的,你是对的,我会尝试这样做,谢谢:)@SlimenTN带有for循环,你最坏的情况是O(n)。这是可以接受的,直到它开始成为一个真正的问题。感谢这项工作,但当日期列表变大时,我会面临性能问题吗?不确定,我将在一个应用程序中使用它,这个应用程序会随着时间的推移变得越来越大。因此,我认为使用
for
reduce
更好。它更快,而且没有开销。