Вы можете взять объект и получить детали для вложенных объектов, проверив свойство и получить это свойство или добавить новый объект в качестве свойства.
var data = ['2019-12-15', '2020-01-15', '2020-01-23'],
tree = data.reduce((t, s) => {
s.split('-').reduce((o, k) => o[k] = o[k] || {}, t);
return t;
}, {});
console.log(tree);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Быстрый подход.
var data = ['2019-12-15', '2020-01-15', '2020-01-23'],
tree = {};
for (const date of data) {
let temp = tree;
for (const key of date.split('-')) {
if (!temp[key]) temp[key] = {};
temp = temp[key];
}
}
console.log(tree);
.as-console-wrapper { max-height: 100% !important; top: 0; }