Dart 如何按字符串过滤数组

时间:2021-02-02 09:05:50

标签: flutter dart

我有一个像这样的简单数组

[{ID: 1195, SubCategoryID: 87, Name: Fajita Pizza (S)}, {ID: 1192, SubCategoryID: 87, Name: Fajita Pizza (S)}, {ID: 1191, SubCategoryID: 87, Name: Fajita Pizza (S)}]

而且我有这样的简单 ID 1195

现在我需要过滤 ID 为 1195 的数组

我尝试这样的事情

 var filterData =  searchArray.searchArrayData.where((i) => i.ID == snapshot.data[i].ID).toList();

显示错误 Class '_InternalLinkedHashMap<String, dynamic>' has no instance getter 'ID'.

也试试这个

var filterData =  searchArray.searchArrayData.where((i) => i['ID'] == snapshot.data[i].ID).toList();

显示此错误 type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'int'

2 个答案:

答案 0 :(得分:0)

试试这个:

List<Map<String, dynamic>> items = [
  {ID: 1195, SubCategoryID: 87, Name: Fajita Pizza (S)},
  {ID: 1192, SubCategoryID: 87, Name: Fajita Pizza (S)},
  {ID: 1191, SubCategoryID: 87, Name: Fajita Pizza (S)}
];

var filterData = items.where((element) => element["ID"] == 1195);

答案 1 :(得分:0)

问题在于您如何使用 snapshot.data[i].ID:您将映射 (i) 作为数组的索引(应该是 int)传递。 如果您澄清了 snapshot.data 返回的是什么,我可以建议您采用正确的方法来做到这一点。