我有一個包含此類資料的陣列(實際上有更多資料)
[
{
serviceid: "979cf8e6",
amount: 1,
price: 11,
materialsPrice: 100,
enable: true,
chenge: true
},
{
serviceid: "979cf812",
amount: 1,
price: 15.5,
materialsPrice: 0,
enable: true,
chenge: true
}
]
我想匹配一個陣列中的所有“價格”,其中change = true。現在我正在使用這個查詢。
double get sumPay {
double sum = listVariant
.map((e) => e.price )
.fold(0, (previousValue, price) => previousValue price!);
return sum;
}
但是這個請求總結了所有的元素,它只會給我那些狀態為變化的元素:true。我會感謝你的幫助)
uj5u.com熱心網友回復:
試試下面的代碼:
void main() {
List total = [
{
'serviceid': "979cf8e6",
'amount': 1,
'price': 11,
'materialsPrice': 100,
'enable': true,
'chenge': true
},
{
'serviceid': "979cf812",
'amount': 1,
'price': 15.5,
'materialsPrice': 0,
'enable': true,
'chenge': true
}
];
var count = total.map((m) => m["price"]).reduce((a, b) => a b);
print(count );
}
uj5u.com熱心網友回復:
在呼叫mapfuncrion之前使用where函式來選擇你想要的:
double get sumPay {
double sum = listVariant
.where((e) => e.change == true)
.map((e) => e.price )
.fold(0, (previousValue, price) => previousValue price!);
return sum;
}
uj5u.com熱心網友回復:
如果不通過,你可以檢查是否chenge通過true,所以改變這個price0
double sum = listVariant
.map((e) => e.price )
.fold(0, (previousValue, price) => previousValue price!);
至
double sum = listVariant
.map((e) => e.chenge ? e.price : 0) //<--- add this
.fold(0, (previousValue, price) => previousValue price!);
或@pskink 提到使用where,像這樣:
double sum = listVariant
.where((e) => e.chenge)
.map((e) => e.price)
.fold(0, (previousValue, price) => previousValue price!);
uj5u.com熱心網友回復:
嘗試這個
double get sumPay {
var changeList = listVariant.where((e) => e.change == true);
double sum = changeList
.fold(0, (previous, next) => previous.price next.price);
return sum;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/516818.html
標籤:扑镖
下一篇:索引為0的顫振資料未顯示
