我有一個每日銷售清單,其中包括每個條目的“日期時間”和“整數”。此串列的問題是有時同一日期有多個條目。
final data = [
DailySales(2022-03-10 05:25:40.000, 200),
DailySales(2022-03-10 09:10:50.000, 455),
DailySales(2022-03-09 04:70:30.000, 255),
DailySales(2022-03-09 20:10:20.000, 525),
DailySales(2022-02-08 05:60:00.000, 100),
DailySales(2022-02-10 00:00:00.000, 520),
DailySales(2022-01-08 12:10:40.000, 100),
DailySales(2022-01-08 02:30:10.000, 250),
DailySales(2022-01-10 09:20:00.000, 520),
];
class DailySales {
final DateTime day;
final int sales;
DailySales(this.day, this.sales);
}
現在基于上面的串列,如果有多個相似日期的條目,我需要動態生成一個新串列,將銷售額組合在一個條目中。即每個日期一個條目和該日期的總銷售額。
uj5u.com熱心網友回復:
一個基本的解決方法:
我將對您問題中的示例資料實施一種簡單的技術。
您的資料:
final data = [
DailySales(2022-03-10 00:00:00.000, 200),
DailySales(2022-03-10 00:00:00.000, 455),
DailySales(2022-03-09 00:00:00.000, 255),
DailySales(2022-03-09 00:00:00.000, 525),
DailySales(2022-02-08 00:00:00.000, 100),
DailySales(2022-02-10 00:00:00.000, 520),
DailySales(2022-01-08 00:00:00.000, 100),
DailySales(2022-01-08 00:00:00.000, 250),
DailySales(2022-01-10 00:00:00.000, 520),
];
您需要添加所有具有相同日期的物件,例如:
void processData() {
List<DailySales> processedData = [];
for (var dailySales in data) {
int sales = 0;
final dailyFormat = DateFormat("dd-MM-yyyy").format(dailySales.day);
for (int i = 0; i < data.length; i ) {
final dateFromData = DateFormat("dd-MM-yyyy").format(data[i].day);
if (dateFromData == dailyFormat) {
sales = data[i].sales;
}
}
processedData
.add(DailySales(DateFormat("dd-MM-yyyy").parse(dailyFormat), sales));
}
final Map<DateTime, DailySales> map = {
for (var dailySales in processedData) dailySales.day : dailySales,
};
processedData = map.values.toList();
}
命名的串列processedData將包含 DailySales,每個日期都有一個條目。
更新:您需要為此使用intl包。
uj5u.com熱心網友回復:
for(int i=0; i<data.length;i ){
if(finalList.contains(data[i].day) {
final tempSales=finalList.firstWhere((element)=>element.day==data[i].day)
data[i].sales = tempSales.sales
}
else{
finalList.add(data);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/451088.html
下一篇:將數字乘以字典中串列的元素
