我有一个清单,想在上面加一个条件。例如:
var lst = [{"value":5 , "name":"test1"} ,{"value":12 , "name":"test2"} , {"value":8 , "name":"test3"} , {"value":23 , "name":"test4"} ];
//output: value greater than 10 => [{"value":12 , "name":"test2"} , {"value":23 , "name":"test4"}]
答案 0 :(得分:3)
要根据条件过滤列表,可以使用List.where,它接受一个测试函数并返回一个新的Iterable,其中包含与测试匹配的元素。
要获取仅包含大于10的值的列表,您可以按以下方式过滤地图列表:
lst.where((e) => e['value'] > 10); //Returns a lazy Iterable
如果以后需要修改列表,可以附加一个.toList()
,以获得新列表。
答案 1 :(得分:2)
您可以在可迭代项上使用where
函数来过滤其元素,然后将结果可迭代项转换回列表,或者使用列表文字语法,或者将“扩展” where
的结果:
var list = [ ... ];
var filtered1 = list.where((e) => e["value"] > 10).toList();
var filtered2 = [for (var e in list) if (e["value"] > 10) e];
var filtered3 = [... list.where((e) => e["value"] > 10)];
答案 2 :(得分:1)
尝试使用此代码:
List lst = [{"value":5 , "name":"test1"} ,{"value":12 , "name":"test2"} , {"value":8 , "name":"test3"} , {"value":23 , "name":"test4"} ];
List newLst = lst.where( (o) => o['value'] > 5).toList();
print(newLst);
答案 3 :(得分:1)
> 试试这个函数,catogory_id == 1 是这里的条件
List<dynamic> chooseCatogory(List<dynamic> list) {
List newlist = list.where((o) => o['category_id'] == '1').toList();
return newlist;
}