Estoy tratando de crear una función simple que devuelva solo las notas incompletas en una matriz con objetos anidados.
mi objeto se parece a:
function uncompletedNotes(notes) { } const notes = [ { id: 1, description: 'Workout program', todos: [ { id: 1, name: 'Push ups - 10 x 3', done: false }, { id: 2, name: 'Abdominals - 20 x 3', done: true }, { id: 3, name: 'Tapis Roulant - 15min', done: true } ] }, { id: 2, description: 'Front-end Roadmap', todos: [ { id: 1, name: 'Learn HTML', done: true }, { id: 2, name: 'Learn CSS', done: true }, { id: 3, name: 'Learn JavaScript', done: true }, { id: 4, name: 'Learn Angular', done: true } ] } ] const notesInProgress = uncompletedNotes(notes); console.log('All notes: ', notes); console.log('Notes In Progress: ', notesInProgress); lo he intentado hasta ahora con notes.map pero no sé la forma correcta de devolver solo los elementos con banderas done: false
Prueba esto por ejemplo:
function uncompletedNotes(notes) { return notes.reduce((prev, note) => prev.concat(note.todos.filter(td => !td.done)), []); } const some_notes = [{ id: 1, description: 'Workout program', todos: [{ id: 1, name: 'Push ups - 10 x 3', done: false }, { id: 2, name: 'Abdominals - 20 x 3', done: true }, { id: 3, name: 'Tapis Roulant - 15min', done: true } ] }, { id: 2, description: 'Front-end Roadmap', todos: [{ id: 1, name: 'Learn HTML', done: true }, { id: 2, name: 'Learn CSS', done: true }, { id: 3, name: 'Learn JavaScript', done: true }, { id: 4, name: 'Learn Angular', done: true } ] } ] const notesInProgress = uncompletedNotes(some_notes); console.log('All notes: ', some_notes); console.log('Notes In Progress: ', notesInProgress);Para obtener las notas que contienen uno o más 'todos' que están marcados como falsos, puede hacer esto:
function uncompletedNotes(notes) { return notes.filter((note) => note.todos.some((todo) => todo.done === false) ) }