首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何过滤List<List<Map<String,dynamic>>>以获取Flutter中的值?

如何过滤List<List<Map<String,dynamic>>>以获取Flutter中的值?
EN

Stack Overflow用户
提问于 2020-12-02 23:18:11
回答 2查看 336关注 0票数 0

我有JSON数据,我正在使用await jsonDecode加载到List>>中。

例如,我有一个;

我需要过滤son以获得name值: Abdul

另外,如果我有一个name_group = alpukat。

如何过滤列表JSON数据以获得Flutter中的值?

代码语言:javascript
运行
复制
[       
             {
                "receive_brutto" : 10,
                "receive_netto" : 20,
                "receive_reject" : 30,
                "data" : [
                    {
                        "id_trx_procurement" : 1,
                        "item_group_id" : 3135,
                        "date_proc" : "2020-11-29",
                        "trx_procurement2" : {
                            "user_proc" : {
                                "user" : {
                                    "name" : "Abdul Fatah"
                                }
                            }
                        },
                        "item_group_proc" : {
                            "name_group" : "Alpukat",
                            "uom_item_group_name" : "Kg"
                        },
                        "uom_proc" : {
                            "name" : "Kg"
                        }
                    },
                    {
                        "id_trx_procurement" : 2,
                        "item_group_id" : 3135,
                        "date_proc" : "2020-11-29",
                        "trx_procurement2" : {
                            "user_proc" : {
                                "user" : {
                                    "name" : "Abdul Fatah"
                                }
                            }
                        },
                        "item_group_proc" : {
                            "name_group" : "Apel",
                            "uom_item_group_name" : "Kg"
                        },
                        "uom_proc" : {
                            "name" : "Kg"
                        }
                    }
                ]
            },
            {
                "receive_brutto" : 10,
                "receive_netto" : 20,
                "receive_reject" : 30,
                "data" : [
                    {
                        "id_trx_procurement" : 1,
                        "item_group_id" : 3135,
                        "date_proc" : "2020-11-29",
                        "trx_procurement2" : {
                            "user_proc" : {
                                "user" : {
                                    "name" : "Abdul Fatah"
                                }
                            }
                        },
                        "item_group_proc" : {
                            "name_group" : "Alpukat",
                            "uom_item_group_name" : "Kg"
                        },
                        "uom_proc" : {
                            "name" : "Kg"
                        }
                    },
                    {
                        "id_trx_procurement" : 2,
                        "item_group_id" : 3135,
                        "date_proc" : "2020-11-29",
                        "trx_procurement2" : {
                            "user_proc" : {
                                "user" : {
                                    "name" : "Abdul Fatah"
                                }
                            }
                        },
                        "item_group_proc" : {
                            "name_group" : "Apel",
                            "uom_item_group_name" : "Kg"
                        },
                        "uom_proc" : {
                            "name" : "Kg"
                        }
                    }
                ]
            }
]

我希望结果过滤器列表data和数据列表添加到列表中,

这是我的代码,但不起作用。

代码语言:javascript
运行
复制
List<E> listItemReceive;
listItemReceive.forEach((element1) {
  element1.data.forEach((element2) {
    if (element2.itemGroupProc.namegroup
            .toLowerCase()
            .contains(text.toLowerCase()) ||
        element2.trxProcurement2.userProc.user.name
            .toLowerCase()
            .contains(text.toLowerCase())) {
      tmp2.add(element2);
    }
    element1.add(tmp2);
  });
  tmplistItemReceive.add(element1);
});

我该怎么解决它呢?

EN

回答 2

Stack Overflow用户

发布于 2020-12-02 23:34:19

  • 从你的代码正在做什么。对于每个element1,您将从element1.data中筛选出一些需要的项目。添加到一个名为tmp2.

的列表中(我猜是这样)

然后,添加到element1.add(tmp2);

  • element1

添加到element1后的

  • 。您不需要为下一次迭代重置和分配新的tmp2。因此tmp2将继续发展
票数 0
EN

Stack Overflow用户

发布于 2020-12-03 00:51:14

您可以使用键遍历列表。请看下面的代码,它过滤掉所有的名称和name_group。

代码语言:javascript
运行
复制
    void main() {
  List<Map<String, dynamic>> one = [
    {
      "receive_brutto": 10,
      "receive_netto": 20,
      "receive_reject": 30,
      "data": [
        {
          "id_trx_procurement": 1,
          "item_group_id": 3135,
          "date_proc": "2020-11-29",
          "trx_procurement2": {
            "user_proc": {
              "user": {"name": "Abdul Fatah"}
            }
          },
          "item_group_proc": {
            "name_group": "Alpukat",
            "uom_item_group_name": "Kg"
          },
          "uom_proc": {"name": "Kg"}
        },
        {
          "id_trx_procurement": 2,
          "item_group_id": 3135,
          "date_proc": "2020-11-29",
          "trx_procurement2": {
            "user_proc": {
              "user": {"name": "Abdul Fatah"}
            }
          },
          "item_group_proc": {
            "name_group": "Apel",
            "uom_item_group_name": "Kg"
          },
          "uom_proc": {"name": "Kg"}
        }
      ]
    },
    {
      "receive_brutto": 10,
      "receive_netto": 20,
      "receive_reject": 30,
      "data": [
        {
          "id_trx_procurement": 1,
          "item_group_id": 3135,
          "date_proc": "2020-11-29",
          "trx_procurement2": {
            "user_proc": {
              "user": {"name": "Abdul Fatah"}
            }
          },
          "item_group_proc": {
            "name_group": "Alpukat",
            "uom_item_group_name": "Kg"
          },
          "uom_proc": {"name": "Kg"}
        },
        {
          "id_trx_procurement": 2,
          "item_group_id": 3135,
          "date_proc": "2020-11-29",
          "trx_procurement2": {
            "user_proc": {
              "user": {"name": "Abdul Fatah"}
            }
          },
          "item_group_proc": {
            "name_group": "Apel",
            "uom_item_group_name": "Kg"
          },
          "uom_proc": {"name": "Kg"}
        }
      ]
    }
  ];

  List<String> names = [];
  one.forEach((item)=>
    (item['data'] as List).forEach((item2)=>
      names.add(item2['trx_procurement2']['user_proc']['user']['name'])
    )
  );
  print(names);

 
 List<String> nameGroup = [];
  one.forEach((item)=>
    (item['data'] as List).forEach((item2)=>
      nameGroup.add(item2['item_group_proc']['name_group'])
    )
  );
  print(nameGroup);
  
  
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65110920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档