Actualmente tengo algunos datos en una base de datos de firebase que contiene varios miembros así:
membersData: { uid1: { first: 'blah' last: 'blah' mStatus: true } uid2: { first: 'blah' last: 'blah' mStatus: true } uid3: { first: 'blah' last: 'blah' mStatus: false } }Para filtrar mis datos ejecuto esto:
Object.keys(membersData).filter(member => membersData[member].mStatus == true)Sin embargo, esto solo devuelve una matriz del uid. ¿Cómo puedo hacer que devuelva el uid pero también el primero, último y mStatus?
Devuelve las claves, porque está ejecutando desde Object.keys .
Intente ejecutar con Object.values para devolver los valores que desea:
Object.values(membersData).filter(member => member.mStatus == true);Obtiene solo las claves con Object.keys . Todos los cálculos posteriores se realizan en esa matriz de claves . Puede usar un .map() nuevamente para obtener los elementos en el formato solicitado.
Simplemente puede usar un método diferente como Object.values() si solo le preocupan los valores y no las claves:
let membersData = { 'uid1' : { 'first': 'blah', 'last': 'blah', 'mStatus': true }, 'uid2': { 'first': 'blah', 'last': 'blah', 'mStatus': true }, 'uid3': { 'first': 'blah', 'last': 'blah', 'mStatus': false } } let ans = Object.keys(membersData).filter(member => membersData[member].mStatus == true).map(x => { return { [x] : membersData[x]} } ); console.log(ans); let ans2 = Object.values(membersData).filter(member => member.mStatus == true); console.log(ans2);