3 回答
TA贡献1804条经验 获得超2个赞
我有一个对象(我们称它为post)。我们称其为array或map。而且,您始终可以遍历数组。您可以for为此使用简单循环。
循环将使您获得数组元素一个接一个的元素,在您的情况下这将是对象。现在,您可以轻松获取rating每个对象的属性值并将它们加起来,然后除以数组的长度。
你应该以类似
var data = [ { _id: '5cc2d552939a9b290bfaee18',
rating: 1,
__v: 0 },
{ _id: '5cc2d6362c9b3729253d14eb',
rating: 4,
__v: 0 } ];
var sum = 0;
for(var i=0; i< data.length; i++){
sum = sum + data[i].rating;
}
var result = sum/data.length;
console.log(result);
我已经解释了这一切,所以您不仅可以复制并粘贴它。请务必阅读说明。
TA贡献1825条经验 获得超4个赞
你有一个数组,而不是一个对象。您需要遍历数组,而不是对象
let posts = [
{ _id: 5cc2d552939a9b290bfaee18,rating: 1, __v: 0 },
{ _id: 5cc2d6362c9b3729253d14eb,rating: 4,__v: 0 }
], sum = 0, average = 0;
//so you need the average of the ratings, get the sum of the ratings
posts.map(post => sum += post.rating);
//divide the sum by the length of the items
average = sum/posts.length
TA贡献1820条经验 获得超9个赞
哦,对于初学者来说,您遍历仅键的数组就Object.keys可以得到键,而不是值,这样就没用了。
function getAverageRating(posts, detailed)
{
let totalPosts = 0;
let totalRatings = 0;
posts.forEach(function (item, index) {
totalRatings += item.rating;
totalPosts++;
});
if(detailed){
return {"total_posts":totalPosts, "sum_ratings":totaltotalRatings, "avg":totaltotalRatings/totalPosts}
}else{
return totaltotalRatings/totalPosts
}
}
添加回答
举报