Dart/Flutter中如何通过子串匹配数组中的目标元素?
解决方案
首先,你的数组定义存在语法问题,元素需要用引号包裹为字符串,否则会被当作未定义变量处理,修正后的数组如下:
var data = ['manggo', 'lemon', 'watermelon', 'guava'];
你遇到的问题是因为数组的includes(你说的contains应该是指这个方法)是判断数组中是否存在完全匹配的元素,而非检查元素是否包含指定子串。要实现匹配包含"water"的元素,可以用以下几种方法:
方法1:filter + includes
用filter筛选数组,结合字符串的includes方法判断元素是否包含目标子串:
const keyword = 'water'; const matchedItems = data.filter(item => item.includes(keyword)); console.log(matchedItems); // 输出: ['watermelon']
方法2:filter + indexOf
如果需要兼容不支持includes的旧浏览器,可改用indexOf——当返回值不等于-1时,说明元素包含目标子串:
const keyword = 'water'; const matchedItems = data.filter(item => item.indexOf(keyword) !== -1); console.log(matchedItems); // 输出: ['watermelon']
方法3:只找第一个匹配元素
如果不需要所有匹配结果,只想获取第一个符合条件的元素,用find方法即可:
const keyword = 'water'; const matchedItem = data.find(item => item.includes(keyword)); console.log(matchedItem); // 输出: 'watermelon'
内容的提问来源于stack exchange,提问作者Riana Deana
相关产品推荐
相关产品推荐

