![](/img/trans.png)
[英]How to convert the object which contains multiple array into an array of objects in javascript?
[英]How to loop over an object which contains objects in Javascript
我有一个看起来像这样的对象(让我们称之为帖子)
[ { _id: 5cc2d552939a9b290bfaee18,
rating: 1,
__v: 0 },
{ _id: 5cc2d6362c9b3729253d14eb,
rating: 4,
__v: 0 } ]
此对象的大小会发生变化。
每次调用该函数时,我想循环遍历帖子,并对评级求和。 我想将评分除以帖子中的项目数。
我试过做这样的事情
Object.keys(posts).forEach(function (item, value) {
});
但无法获得实际数据
谢谢
你有一个数组,而不是一个对象。 您需要循环遍历数组,而不是对象
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
哦,对于初学者来说,你循环遍历一个只有键的数组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
}
}
我有一个对象(让我们称之为帖子) 。 我们称之为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);
我解释了这一切,所以你不要只是复制和粘贴它。 请阅读说明。
由于它是一个数组,因此交替方式是使用reduce
const items = [ { _id: '5cc2d552939a9b290bfaee18', rating: 1, __v: 0 }, { _id: '5cc2d6362c9b3729253d14eb', rating: 4, __v: 0 } ]; // make sure to calculate when there are items if (items.length) { const sumRating = items.reduce((sum, item) => sum + item.rating, 0); const average = sumRating / items.length; console.log(average); }
参考:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.