3 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
我有一個(gè)對(duì)象(我們稱它為post)。我們稱其為array或map。而且,您始終可以遍歷數(shù)組。您可以for為此使用簡(jiǎn)單循環(huán)。
循環(huán)將使您獲得數(shù)組元素一個(gè)接一個(gè)的元素,在您的情況下這將是對(duì)象?,F(xiàn)在,您可以輕松獲取rating每個(gè)對(duì)象的屬性值并將它們加起來(lái),然后除以數(shù)組的長(zhǎng)度。
你應(yīng)該以類(lèi)似
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);
我已經(jīng)解釋了這一切,所以您不僅可以復(fù)制并粘貼它。請(qǐng)務(wù)必閱讀說(shuō)明。

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
你有一個(gè)數(shù)組,而不是一個(gè)對(duì)象。您需要遍歷數(shù)組,而不是對(duì)象
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貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
哦,對(duì)于初學(xué)者來(lái)說(shuō),您遍歷僅鍵的數(shù)組就Object.keys可以得到鍵,而不是值,這樣就沒(méi)用了。
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
}
}
添加回答
舉報(bào)