JS中使用filter过滤Firebase数据如何返回完整对象而非仅key
你可以在filter筛选后拼接map方法,将uid和对应成员字段合并返回,示例代码如下:
const filteredMembers = Object.keys(membersData) .filter(uid => membersData[uid].mStatus === true) .map(uid => ({ uid, first: membersData[uid].first, last: membersData[uid].last, mStatus: membersData[uid].mStatus }))
如果想要更简洁的写法,也可以用对象扩展运算符简化字段复制:
const filteredMembers = Object.keys(membersData) .filter(uid => membersData[uid].mStatus === true) .map(uid => ({ uid, ...membersData[uid] }))
如果数据量较大,推荐用reduce方法一次性完成过滤和字段组装,避免两次遍历数组:
const filteredMembers = Object.entries(membersData).reduce((result, [uid, memberInfo]) => { if (memberInfo.mStatus) { result.push({ uid, ...memberInfo }) } return result }, [])
以上写法最终返回的结果都是符合要求的数组,结构示例如下:
[ { uid: 'uid1', first: 'blah', last: 'blah', mStatus: true }, { uid: 'uid2', first: 'blah', last: 'blah', mStatus: true } ]
内容的提问来源于stack exchange,提问作者FabricioG
相关产品推荐
相关产品推荐

