Me gustaría extraer solo ciertas propiedades de un objeto anidado. Por ejemplo, me gustaría una nueva matriz que no incluya 'percentDone', 'rollup' & 'color'. Usando la función de mapa, no estoy seguro de cómo acceder a todos los niños anidados.
const tasks = [ { id: 1000, name: 'Launch SaaS Product', percentDone: 50, startDate: '2019-01-14', expanded: true, children: [ { id: 1, name: 'Setup web server', percentDone: 50, duration: 10, startDate: '2019-01-14', rollup: true, endDate: '2019-01-23', expanded: true, children: [ { id: 11, name: 'Install Apache', percentDone: 50, startDate: '2019-01-14', rollup: true, duration: 3, color: 'teal', endDate: '2019-01-17', cost: 200, baselines: [ { startDate: '2019-01-13T23:00:00', endDate: '2019-01-16T23:00:00' }, { startDate: '2019-01-13T23:00:00', endDate: '2019-01-16T23:00:00' }, { startDate: '2019-01-13T23:00:00', endDate: '2019-01-16T23:00:00' } ] } ], baselines: [ { startDate: '2019-01-13T23:00:00', endDate: '2019-01-22T23:00:00' }, { startDate: '2019-01-13T23:00:00', endDate: '2019-01-22T23:00:00' }, { startDate: '2019-01-13T23:00:00', endDate: '2019-01-22T23:00:00' } ] } ], endDate: '2019-03-16', baselines: [ { startDate: '2019-01-13T23:00:00', endDate: '2019-03-15T23:00:00' }, { startDate: '2019-01-13T23:00:00', endDate: '2019-03-15T23:00:00' }, { startDate: '2019-01-13T23:00:00', endDate: '2019-03-15T23:00:00' } ] } ];
Algo como esto, pero esto no incluye a todos los niños anidados.
var x = tasks.map(item => { return { name: item.name, StartDate: item.StartDate, etc... children: item.children.map(x => ({ name: x.name, StartDate: x.StartDate, })) } });
Lo extraería a una función diferente, pero también podría alinearlo así:
var x = tasks.map(function mapper(item) { return { name: item.name, StartDate: item.StartDate, // etc... children: item.children.map(mapper), } });