添加数据集中所有对象的所有值
问题描述:
所以我有一个包含电影评级的数据集,每部电影都有多个评级。 我设法得到所有的数据,但我想添加所有的值。添加数据集中所有对象的所有值
例如:
title: avatar, rating: 2.5
title: avatar, rating: 3
title: avatar, rating 5
rating = 10.5
avrRating = 10.5/ratings.lenght = 3.5
到目前为止我的代码:
(它选择一个随机的电影,TH它将其movieId与来自另一个数据集的movieId相匹配。然后我将范围从0-5转换为0-100,以便与data2中的宽度相匹配。评级[I] .rating显示我多个值,但我想avarage值,见上面的例子)
function willekeurigObject() {
var blokje = document.querySelector("#data1");
var blokje = document.querySelector("#data2");
var blokje = document.querySelector("#data3");
var willekeurigAdres = Math.floor(Math.random() * films.length);
var willekeurigefilm = films[willekeurigAdres];
for (var i = 0; i < rating.length; i++){
if (rating[i].movieId == willekeurigefilm.movieId){
var ratings = rating[i].rating;
}
}
var width = (ratings/0.05) + "%";
data1.innerHTML = willekeurigefilm.title;
data2.innerHTML = "<div class='stars'><img src='img/starsinv.png' class='img'></img><div class='yellow' style='width: " + width + "'></div></div>";
data3.innerHTML = "";
}
setInterval(willekeurigObject, 3000);
答
您可以使用Array.prototype.reduce
数组中的加起来所有的值。
https://jsfiddle.net/khzcwnso/
var movies = [{title: 'avatar', rating: 2.5}, {title: 'avatar2', rating: 3}, {title: 'avatar3', rating: 5}];
var total = movies.reduce(function(sum, movie){
return sum + movie.rating;
}, 0);
var average = total/movies.length;
使变量名唯一或覆盖它们 –