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

srb*_*633 4 javascript node.js

includes()我注意到当尝试在这样的函数中使用 OR 运算符时

x.includes("dogs"||"cats"||"birds"||"fish"||"frogs")
Run Code Online (Sandbox Code Playgroud)

它只会尝试包含的第一个字符串,而不会进一步尝试。我怀疑我要么在这里遗漏了一些明显的东西,要么includes()不是用于这种情况的正确函数。

目标是尝试多个字符串以确定它们是否是 x 的子字符串。因为我正在尝试使用 or 运算符,所以我的目的是不接收每个试验字符串的布尔值数组,而是如果有任何一个为 true,则需要一个 true 布尔值,否则需要 false。

Bar*_*mar 8

运算符||不是分布式的。函数参数简单地计算为表达式,因此您的调用相当于:

var temp = "dogs"||"cats"||"birds"||"fish"||"frogs";
x.includes(temp)
Run Code Online (Sandbox Code Playgroud)

一系列||操作的值是该系列中的第一个真值。由于所有非空字符串都是真值,因此相当于:

var temp = "dogs";
x.includes(temp)
Run Code Online (Sandbox Code Playgroud)

您需要使用每个字符串||的调用结果:includes

x.includes("dogs") || x.includes("cats") || x.includes("birds") ...
Run Code Online (Sandbox Code Playgroud)

您可以使用some()数组的方法来简化它:

["dogs","cats","birds","fish","frogs"].some(species => x.includes(species))
Run Code Online (Sandbox Code Playgroud)