Tengo la siguiente estructura de datos:
products = [ { name: 'Menu1', subitems: [ { name: 'Menu2' }, ] }, { name: 'Menu3', subitems: [ { name: 'Menu4', subitems: [ { name:'Menu5' }, { name:'Menu6' } ] }, ] }, ]Desea obtener todos los valores de nombres dentro de él, sin importar qué tan profundo esté anidado. Probé soluciones relacionadas con flat, reduce, concat, map, for of, etc. pero nunca obtengo el nivel más profundo 'Menu5' y 'Menu6'
Creo que esto está diciendo recursividad en voz alta pero no puedo implementarlo
Usando Array#reduce :
const _getNames = (products = []) => products.reduce((names, { name, subitems = [] }) => { names.push(name); if(subitems.length > 0) { names.push(..._getNames(subitems)); } return names; }, []); const products = [ { name: 'Menu1', subitems: [ { name: 'Menu2' } ] }, { name: 'Menu3', subitems: [ { name: 'Menu4', subitems: [ { name:'Menu5' }, { name:'Menu6' } ] } ] } ]; console.log( _getNames(products) );