A partir de una lista de objetos, trato de crear un objeto de elementos anidados a partir de
La lista es la siguiente
[ { label: 'Root', data: 173, children: [], }, { label: 'Root child 1', data: 174, children: [], }, { label: 'Root child 2', data: 175, children: [], }, { label: 'Root child 3', data: 176, children: [], } ]Y quiero convertirlo en
{ label: 'Root', data: 173, children: [ { label: 'Root child 1', data: 174, children: [ { label: 'Root child 2', data: 175, children: [ { label: 'Root child 3', data: 176, children: [ ], } ], } ], } ], }La lógica es que cada elemento de la lista de arriba a abajo contendrá el siguiente elemento en la propiedad de los niños. Esto, hasta que haya algo que agregar.
La lista puede tener un solo elemento o un número indefinido
Queria agregar algo que he probado pero me hace falta mucho para solucionarlo
puedes usar reduceRight para eso
es como reduce pero va de derecha a izquierda en lugar de izquierda a derecha
const data = [ { label: 'Root', data: 173, children: [], }, { label: 'Root child 1', data: 174, children: [], }, { label: 'Root child 2', data: 175, children: [], }, { label: 'Root child 3', data: 176, children: [], } ] const result = data.reduceRight((res, item) => { return { ...item, children: [res] } }) console.log(result)