颤振 - 如何计算列表中数据的平均值?
Posted
技术标签:
【中文标题】颤振 - 如何计算列表中数据的平均值?【英文标题】:flutter - how do calculate average the data in list? 【发布时间】:2019-06-23 18:36:57 【问题描述】:我有一个关于用户食物的List<Comment>
。
它看起来像这样:
[
userId: 1,
rating: 4.5
,
userId: 2,
rating: 4.0
,
userId: 3,
rating: 3.5
,
userId: 4,
rating: 3.0
...
];
我想获得平均评分。 AVERAGE = Number of ratings : total user
,如何在 dart 中应用这个?
【问题讨论】:
【参考方案1】: var values = [
'userId': 1, 'rating': 4.5,
'userId': 2, 'rating': 4.0,
'userId': 3, 'rating': 3.5,
'userId': 4, 'rating': 3.0
];
var result = values.map((m) => m['rating']).reduce((a, b) => a + b) / values.length;
print(result);
【讨论】:
在 json 相关的问题上没有人能打败你。 嗨@Günter Zöchbauer,如果我想从最高评分到最低评分对列表进行排序怎么办? 仅在手机上。应该有一个关于如何按值对地图进行排序的问题 这个答案已经过时了。在这里查看更好的解决方案***.com/a/69660580/8539278【参考方案2】:2021 年 dart 具有来自collection
包的内置average
方法,可用于Iterable
。
import 'package:collection/collection.dart';
void main()
var values = [
'userId': 1, 'rating': 4.5,
'userId': 2, 'rating': 4.0,
'userId': 3, 'rating': 3.5,
'userId': 4, 'rating': 3.0
];
var result = values.map((m) => m['rating']!).average;
print(result); // prints 3.75
您可能还对同一包中的 .sum
方法感兴趣。
【讨论】:
【参考方案3】:我通过使用 fold 函数将值相加然后除以总数来做到这一点。这是一个例子:
var values = [
'userId': 1, 'rating': 4.5,
'userId': 2, 'rating': 4.0,
'userId': 3, 'rating': 3.5,
'userId': 4, 'rating': 3.0
];
List<double> ratings = values.map((e) => e.price!).toList();
double sum = ratings.fold(0, (p, c) => p + c);
if (sum > 0)
double average = sum / ratings.length;
【讨论】:
以上是关于颤振 - 如何计算列表中数据的平均值?的主要内容,如果未能解决你的问题,请参考以下文章