【问题标题】:how to filter a list with condition in dart如何在飞镖中过滤带有条件的列表
【发布时间】:2020-04-12 20:56:42
【问题描述】:

我有一个清单,我想在上面加上一个条件。例如,我希望列表lst 中的项目值大于 10:

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

【问题讨论】:

标签: dart


【解决方案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);

【讨论】:

    【解决方案2】:

    要根据条件过滤列表,您可以使用List.where,它接受一个测试函数并返回一个包含与测试匹配的元素的新Iterable。

    要获得仅包含大于 10 的值的列表,您可以像这样过滤地图列表:

    lst.where((e) => e['value'] > 10); //Returns a lazy Iterable
    

    如果您以后需要修改您的列表,您可以附加 .toList(),以获取新列表。

    【讨论】:

      【解决方案3】:

      您可以在可迭代对象上使用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)];
      

      【讨论】:

        【解决方案4】:

        >试试这个函数,catogory_id == 1 是这里的条件

        List<dynamic> chooseCatogory(List<dynamic> list) {
            List newlist = list.where((o) => o['category_id'] == '1').toList();
            return newlist;
          }
        

        【讨论】:

          猜你喜欢
          • 2019-07-09
          • 2021-01-18
          • 2020-11-29
          • 2022-01-24
          • 2018-10-15
          • 2021-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多