Html 如何计算角度的平均值?
我尝试在人们评论明星数量时添加平均评论信息,然后计算出电影的平均明星数。我不知道如何在html中获得我的平均值 这是我的HTML文件:Html 如何计算角度的平均值?,html,angular,Html,Angular,我尝试在人们评论明星数量时添加平均评论信息,然后计算出电影的平均明星数。我不知道如何在html中获得我的平均值 这是我的HTML文件: <div *ngFor="let movie of movieData"> <table class="table table-bordered"> <thead> <tr> <th>Reviewer</th> <th>St
<div *ngFor="let movie of movieData">
<table class="table table-bordered">
<thead>
<tr>
<th>Reviewer</th>
<th>Stars</th>
<th>Reviews</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let info of movie.reviews">
<td>{{info.name}}</td>
<td>{{info.stars}}</td>
<td>{{info.comment}}</td>
</tr>
</tbody>
</table>
</div>
<p>Average rating: <b> {{avgRating}} </b></p>
有人能帮忙吗?这里有一些问题 首先,存在定义为输入的AVG:
@Input() avgRating: any;
但它似乎不应该是一个输入,如果它是一个输入,你不需要计算它,然后它在模板中显示为与输入相同的值
另一方面,有一个avg
var,它应该具有平均值。但是进行数学运算来设置avg
值的getMovie()
方法似乎从未被调用过
在我看来更符合逻辑的是,在执行订阅回调时,去掉avgRating
var,然后调用getMovie(idx)
ongetOneMovie()
方法:
getOneMovie() {
let observable = this.httpService.oneMovie(this.movieID);
observable.subscribe((data) => {
this.movieData = data;
getMovie(idx)
});
}
并在模板中使用此avg
var:
<p>Average rating: <b> {{ avg }} </b></p>
平均评分:{{avg}
实际上,
getMovie(idx)
的idx
参数似乎不用于任何事情,因此您可能也希望删除此参数。如果一部电影有评论,您可以在获得评论后立即计算平均值。例如:
getOneMovie() {
let observable = this.httpService.oneMovie(this.movieID);
observable.subscribe((data) => {
this.movieData = data;
if (this.movieData.reviews != null && this.movieData.reviews.length > 0) {
let sum = 0;
this.movieData.reviews.forEach(review => sum += review.stars);
this.avg = sum/this.movieData.reviews.length;
} else {
this.avg = 0; # Or whatever you want to show if there are no reviews for the movie
}
});
}
上面的代码检查电影是否至少有1次回顾以计算平均值,否则将平均值设置为0
然后在模板中用
{{avg}}
正如@jeprubio提到的,我会删除Input()
和getMovie(idx)
,因为它们没有被使用
最后,请记住,您没有初始化avg
,如果getOneMovie()
由于任何原因失败,您将永远无法将其设置为数字(导致模板中出现错误)
getOneMovie() {
let observable = this.httpService.oneMovie(this.movieID);
observable.subscribe((data) => {
this.movieData = data;
if (this.movieData.reviews != null && this.movieData.reviews.length > 0) {
let sum = 0;
this.movieData.reviews.forEach(review => sum += review.stars);
this.avg = sum/this.movieData.reviews.length;
} else {
this.avg = 0; # Or whatever you want to show if there are no reviews for the movie
}
});
}
{{avg}}