Flutter中如何筛选包含指定标签的列表元素?
错误原因分析
- 第一种写法逻辑完全颠倒:你调用了字符串
tag的contains方法,传入的是数组类型的map["tags"],不仅类型不匹配,也不符合「判断tags数组是否包含目标tag」的需求。 - 第二种写法固定取索引为1的元素,只能匹配tag2在数组第二位的场景,没有覆盖tags数组的所有元素。
正确实现
Dart的List内置的contains()方法会自动遍历整个数组判断是否存在匹配项,你只需要把contains的调用主体换成每条数据的tags数组即可,代码如下:
String tag = 'tag2'; // 写法1:易读版 var list2 = list.where((item) { List tags = item["tags"] as List; return tags.contains(tag); }).toList(); // 写法2:单行简写版 var list2 = list.where((item) => (item["tags"] as List).contains(tag)).toList();
运行后list2就会返回所有tags字段包含tag2的元素。
内容的提问来源于stack exchange,提问作者Sioka
相关产品推荐
相关产品推荐

