Javascript 比较字符串和数组的快速方法

Javascript 比较字符串和数组的快速方法,javascript,typescript,Javascript,Typescript,我有一个有很多名字的数组:{'johndoe','petershark',…} 现在,我想比较并匹配一个字符串,例如,“该轮到你了,John Doe,请执行”,如果数组包含该字符串,则返回名称。 字符串可以是长文本 我试过这样做,但不起作用: var searchStr = "This is your turn John Doe, pls do it" var stringArray = ["John Doe", "Peter Shark"]; return (stringArray.ind

我有一个有很多名字的数组:
{'johndoe','petershark',…}

现在,我想比较并匹配一个字符串,例如,
“该轮到你了,John Doe,请执行”
,如果数组包含该字符串,则返回名称。 字符串可以是长文本

我试过这样做,但不起作用:

var searchStr = "This is your turn John Doe, pls do it"

var stringArray = ["John Doe", "Peter Shark"];

return (stringArray.indexOf(searchStr) > -1)

您需要以另一种方式进行搜索-迭代
stringArray
,并检查
中是否包含
部分
名称
searchStr

var searchStr1=“该你了,约翰·多伊,请动手”;
var stringArray=[“John Doe”、“Peter Shark”];
log(stringArray.some(name=>searchStr1.includes(name));
var searchStr2=“这是轮到你的Foo栏,请点击”;

log(stringArray.some(name=>searchStr2.includes(name))正则表达式非常擅长快速查找内容。如果
stringArray
保持不变,您可以提前准备regexp,然后稍后重新使用它:

let searchStr=“该你了,约翰·多伊,请你做”
让stringArray=[“John Doe”,“Peter Shark”];
让nameMatcher=newregexp(stringArray.map(
// https://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
s=>s.replace(/[-\/\^$*+?.()|[\]{}]/g,“\\$&”)
).加入(“|”);
log(searchStr.match(nameMatcher))