Actualmente estoy trabajando con objetos y matrices en nodejs junto con filtros. Actualmente tengo dificultades para descubrir cómo atravesar correctamente un objeto y filtrar los resultados deseados. En cambio, me estoy poniendo undefined . Tengo un objeto de users y quiero filtrar para cada configuración de usuario que tiene active === true y luego, en última instancia, mostrar la configuración de todos los usuarios con ese filtro en el resultado final. ¿Cuál es la forma correcta/mejor de abordar esto? ¿Debo usar map ?
Resultado actual:
undefinedResultado deseado:
[ { email: 'test1@email.com', active: true }, { email: 'test3@email.com', active: true }, { email: 'test4@email.com', active: true } ]Código:
const users = [ { name: 'User1', configuration: [ { email: 'test1@email.com', active: true }, { email: 'test2@email.com', active: false } ], }, { name: 'User2', configuration: [ { email: 'test3@email.com', active: true }, { email: 'test4@email.com', active: true } ], }, ]; const result = users.forEach(user => user.configuration.filter( x => { let { active } = x; return active === true; })); console.log(result);puedes usar flatMap para esto. forEach siempre devuelve undefined . por lo general, si desea devolver un map de uso de matriz, pero dado que el filter también devuelve una matriz, debe aplanarlo para obtener el resultado deseado, por lo tanto, flatMap
const users = [{name: 'User1',configuration: [ {email: 'test1@email.com',active: true},{email: 'test2@email.com',active: false}],},{name: 'User2',configuration: [ {email: 'test3@email.com',active: true},{email: 'test4@email.com',active: true}],},]; const result = users.flatMap(user => user.configuration.filter( x => x.active===true)); console.log(result);