寻求Firestore文档的正确迭代实现方式
遍历Firestore文档数据的更优方案
嘿,我来帮你优化这个Firestore文档数据的遍历逻辑~你当前用Object.keys()的方式确实能实现需求,但其实有更简洁直观的方案,那就是用Object.entries()方法,它可以直接把对象转成[键名, 对应值]的数组,省去你手动通过键名取值的步骤,代码会更清爽。
给你调整后的showAnswers方法示例:
showAnswers(querySnapshot) { let snapshotData = querySnapshot.data(); // 用Object.entries直接解构键和值 let answersCounters = Object.entries(snapshotData).map(([key, count]) => { return { key, count }; // 如果还有其他处理逻辑,比如格式化count或者添加额外字段,直接在这里加就行 }); // 后续可以根据需求对answersCounters做排序等操作,比如按count降序: // answersCounters.sort((a, b) => b.count - a.count); // 这里写你后续使用answersCounters的逻辑,比如赋值给组件变量之类的 }
另外补充一点:如果你的文档数据里可能存在未定义或者空值的字段,还可以在map之前加个过滤步骤,避免无效数据混入:
let answersCounters = Object.entries(snapshotData) .filter(([key, count]) => count !== undefined && count !== null) .map(([key, count]) => ({ key, count }));
这样处理下来,代码不仅更简洁,可读性也更强,完全能替代你之前的实现逻辑~
内容的提问来源于stack exchange,提问作者Manspof
相关产品推荐
相关产品推荐

