为了账号安全,请及时绑定邮箱和手机立即绑定

在inclus()中使用“OR”运算符来试验字符串中是否存在任何子字符串?

在inclus()中使用“OR”运算符来试验字符串中是否存在任何子字符串?

慕虎7371278 2022-08-18 09:56:32
我注意到,当尝试在这样的函数中使用OR运算符时includes()x.includes("dogs"||"cats"||"birds"||"fish"||"frogs")它只会试用包含的第一个字符串,而不会进一步尝试。我怀疑我在这里错过了一些明显的东西,或者不是用于这种情况的正确功能。includes()目标是试验多个字符串,以确定它们是否是 x 的子字符串。因为我尝试使用 or 运算符,所以我的意图是不要为每个试验字符串接收一个布尔值数组,而是如果有任何值为 true,则需要一个 true 的布尔值,否则需要 false。=
查看完整描述

3 回答

?
幕布斯7119047

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))


查看完整回答
反对 回复 2022-08-18
?
饮歌长啸

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);


查看完整回答
反对 回复 2022-08-18
?
慕勒3428872

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);


查看完整回答
反对 回复 2022-08-18
  • 3 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信