我無法計算串列中專案的總和和百分比:
list = [
GenderAgeView(gender: M, total: 3),
GenderAgeView(gender: F, total: 35),
GenderAgeView(gender: U, total: 1),
GenderAgeView(gender: M, total: 45),
GenderAgeView(gender: M, total: 65),
GenderAgeView(gender: M, total: 1),
GenderAgeView(gender: F, total: 8),
GenderAgeView(gender: U, total: 1),
GenderAgeView(gender: F, total: 43),
GenderAgeView(gender: M, total: 50),
GenderAgeView(gender: F, total: 31),
GenderAgeView(gender: F, total: 16),
GenderAgeView(gender: M, total: 36),
GenderAgeView(gender: F, total: 50),
GenderAgeView(gender: M, total: 23)
]
編輯 - 我想檢索 dataPoints() 方法。我想分組并計算總和和百分比......輸出應如下所示:
GenderAgeView(gender: M, total: 120),
GenderAgeView(gender: F, total: 100),
GenderAgeView(gender: U, total: 2)
到目前為止我做了什么:
List<GenderAgeView> dataPoints() {
// var data is my main list I get the data from the API call
var data = genderAgeControllerData.genderAgeList;
// Here I create a list and check if for null empty values on attribute gender
var list = data.where((m) => m.gender != '').map<GenderAgeView>((m) {
return GenderAgeView(
gender: m.gender,
total: m.total,
);
}).toList();
return list;
}
我不確定是否必須使用 reduce 來求和,然后除以串列的長度......
請問,你能幫忙嗎?謝謝
uj5u.com熱心網友回復:
使用來自 pub.dev的https://pub.dev/packages/collection包。我使用以下方法匯入它:
import 'package:collection/collection.dart';
然后使用這段代碼。創建一個地圖,其中groupBy鍵是性別,條目是GenderAgeViews. 然后,您遍歷地圖中的每個鍵并將GenderAgeView物件添加到resultList. 然后該fold方法獲取所有條目并計算每個條目的總數,然后在建構式中使用。
List<GenderAgeView> dataPoints() {
List<GenderAgeView> data = genderAgeControllerData.genderAgeList;
final groupedMap = col.groupBy(data, (GenderAgeView data) => data.gender);
List resultList = [];
groupedMap.forEach((key, entries) {
resultList.add(GenderAgeView(gender: key, total: entries.fold(0, (total,cur) => total cur.total)));
});
return resultList;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/489960.html
標籤:扑
上一篇:INDART-toList()方法不會將int的Iterable轉換為串列,但是當它在print()中應用時,它可以正常作業。為什么?
