面试题答案
一键面试Map函数代码
function (doc) {
if (doc.category && doc.product_info && doc.product_info.name && doc.product_info.price && doc.reviews) {
var positiveReviews = [];
for (var i = 0; i < doc.reviews.length; i++) {
if (doc.reviews[i].rating >= 4) {
positiveReviews.push(doc.reviews[i].comment);
}
}
emit(doc._id, {
category: doc.category,
name: doc.product_info.name,
price: doc.product_info.price,
positiveReviews: positiveReviews
});
}
}
性能优化策略
- 减少不必要计算:首先通过
if
语句检查必要的字段是否存在,避免在缺失关键字段的文档上进行无意义的处理,减少无效计算。 - 避免中间数据存储:在处理
reviews
数组时,直接筛选出符合条件的评论并存储,而不是先存储所有评论再进行筛选,减少内存占用。 - 高效的遍历方式:采用简单的
for
循环遍历reviews
数组,这种方式在遍历数组时效率较高,相比于一些高级的数组遍历方法(如forEach
等),性能更优。