3 回答
TA贡献1794条经验 获得超8个赞
运算符不是可分配的。函数参数只是作为表达式计算,因此您的调用等效于:||
var temp = "dogs"||"cats"||"birds"||"fish"||"frogs"; x.includes(temp)
一系列操作的值是该系列中的第一个真值。由于所有非空字符串都是真实的,因此这等效于:||
var temp = "dogs"; x.includes(temp)
您需要在调用每个字符串的结果上使用:||
includes
x.includes("dogs") || x.includes("cats") || x.includes("birds") ...
您可以使用数组方法简化此操作:some()
["dogs","cats","birds","fish","frogs"].some(species => x.includes(species))
TA贡献1951条经验 获得超3个赞
includes只查找一个字符串。您可以使用 .matchAll() 函数,该函数返回所有匹配结果的迭代器
const regex = /dogs|cats|birds|fish|frogs/g;
const str = 'the dogs, cats, fish and frogs all watched birds flying above them';
const exists = [...str.matchAll(regex)].length > 0;
console.log(exists);
TA贡献1848条经验 获得超6个赞
对于这种情况,使用正则表达式和所需的布尔结果,RegExp#test派上用场。
此方法不返回迭代器,并且不需要数组即可获取迭代器的长度。
const
regex = /dogs|cats|birds|fish|frogs/g,
str = 'the dogs, cats, fish and frogs all watched birds flying above them',
exists = regex.test(str);
console.log(exists);
添加回答
举报