如何在dart中过滤条件列表

时间:2019-12-20 10:24:26

标签: dart

我有一个清单,想在上面加一个条件。例如:

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"}]

4 个答案:

答案 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;
  }