Dart:根据条件求和列表中的值:根据ID计算列表值



我有列表,我想得到可用数量的总数

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

最新更新