我有列表,我想得到可用数量的总数
var itemlist=[{"item_name":"32inch Tv","barnd":"samsung","qty":12},
{"item_name":"32inch Tv","barnd":"realme","qty":10},
{"item_name":"55inch Tv","barnd":"samsung","qty":10},
{"item_name":"55inch Tv","barnd":"mi","qty":36},
{"item_name":"40inch Tv","barnd":"sony","qty":20},
{"item_name":"40inch Tv","barnd":"vu","qty":12}];
在飞镖中如何得到";数量;基于";项目名称"?
像
32inch Tv =22
55inch Tv =46
40inch Tv =32
如何得到这个结果???
作为
List<int> qty=[22,46,32];
您需要做的是,将所有数据收集到一个映射中作为键值对,并在最后通过逐个相加来获得数量。
void main() {
final itemlist = [{"item_name":"32inch Tv","barnd":"samsung","qty":12},
{"item_name":"32inch Tv","barnd":"realme","qty":10},
{"item_name":"55inch Tv","barnd":"samsung","qty":10},
{"item_name":"55inch Tv","barnd":"mi","qty":36},
{"item_name":"40inch Tv","barnd":"sony","qty":20},
{"item_name":"40inch Tv","barnd":"vu","qty":12}];
final values = <String, int>{};
for (int i = 0; i < itemlist.length; i++) {
final item = itemlist[i];
final itemName = item['item_name'] as String;
final qty = item['qty'] as int;
int previousValue = 0;
if (values.containsKey(itemName)) {
previousValue = values[itemName]!;
}
previousValue = previousValue + qty;
values[itemName] = previousValue;
}
final result = values.values;
print('result: $result');
}
void main() {
var itemlist=[{"item_name":"32inch Tv","barnd":"samsung","qty":12},
{"item_name":"32inch Tv","barnd":"realme","qty":10},
{"item_name":"55inch Tv","barnd":"samsung","qty":10},
{"item_name":"55inch Tv","barnd":"mi","qty":36},
{"item_name":"40inch Tv","barnd":"sony","qty":20},
{"item_name":"40inch Tv","barnd":"vu","qty":12}];
var result = itemlist
.where((e) => e['item_name'] == '55inch Tv')
.map((e) => e['qty'] as int)
.reduce((x,y) => x+y);
print(result);
}
输出:
46