如何搜索类对象的列表,其中一个属性与另一个字符串列表中的任何值匹配
我能够基于单个字符串进行过滤,但不能基于字符串列表
final List<shop_cart.ShoppingCart> cartprd = snapshot.documents
.map((f) => shop_cart.ShoppingCart.fromMap(f.data))
.toList();
Run Code Online (Sandbox Code Playgroud)
Tom*_*son 16
List<SomeClass> list = list to search;
List<String> matchingList = list of strings that you want to match against;
list.where((item) => matchingList.contains(item.relevantProperty));
Run Code Online (Sandbox Code Playgroud)
如果项目数量list很大,您可能需要执行以下操作:
List<SomeClass> list = list to search;
List<String> matchingList = list of strings that you want to match against;
final matchingSet = HashSet.from(matchingList);
list.where((item) => matchingSet.contains(item.relevantProperty));
Run Code Online (Sandbox Code Playgroud)
或者只是始终将匹配的值存储为哈希集。
如果您想检查对象列表中的值。你可以按照这个:
List rows = [
{"ags": "01224", "name": "Test-1"},
{"ags": "01224", "name": "Test-1"},
{"ags": "22222", "name": "Test-2"},
];
bool isDataExist(String value) {
var data= rows.where((row) => (row["name"].contains(value)));
if(data.length >=1)
{
return true;
}
else
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以将自己的对象数组放在行上。用name替换您的密钥。您可以根据函数isDataExist返回的 true 或 false 来完成您的工作
| 归档时间: |
|
| 查看次数: |
30739 次 |
| 最近记录: |