Tengo una serie de objetos como este.
[ {id :1, parent : null, title:test}, {id :2, parent : 1, title:test2}, {id :3, parent : 2, title:test3}, . . . ]y necesita la función para organizar como esta Salida:
[ {id :1, parent : null, title:test, sub:[ {id :2, parent : 1, title:test2, sub :[ {id :3, parent : 2, title:test3}, ] }, ]}, . . . ]Y así manejar profundo anidado
algo como esto debería hacer lo que solicitaste:
function nestArrays(arr) { let retval = []; for (let i = data.length - 1; i >= 0; i--) { const isLastElement = i < data.length - 1; retval.push( isLastElement ? { ...data[i], sub: [retval[retval.length - 1]], } : data[i] ); } return retval; }Puede iterar sobre sus objetos, tratar de encontrar su padre por ID, crear una sub en el padre si no existe y finalmente empujar el objeto actual a la sub :
const objects = [ { id: 1, parent: null, title: "test" }, { id: 2, parent: 1, title: "test2" }, { id: 3, parent: 2, title: "test3" }, { id: 4, parent: 2, title: "test4" }, ]; // This result array will contain all root objects, // eg those with `parent === null` const roots = []; for (const object of objects) { if (object.parent === null) { roots.push(object); } else { const parent = objects.find(o => o.id === object.parent); if (parent) { (parent.sub ||= []).push(object); } } } console.log(JSON.stringify(roots, null, 2));