检查数组是不是包含字符串但忽略该字符串中的其他字母[重复]

Posted

技术标签:

【中文标题】检查数组是不是包含字符串但忽略该字符串中的其他字母[重复]【英文标题】:Check whether an array includes a string but ignore rest other letters in that string [duplicate]检查数组是否包含字符串但忽略该字符串中的其他字母[重复] 【发布时间】:2019-06-29 00:32:42 【问题描述】:

我有一个变量,例如,

var url = "/login/user";

我有一个类似的数组,

var x = ["login", "resetpassword", "authenticate"];

现在我需要检查 url 字符串是否存在于字符串数组中。正如我们所见,login 存在于一个数组中,但是当我执行 x.indexOf(url) 时,它总是收到 false,因为字段 url 还有其他字母。那么现在如何在检查数组中的字符串并返回 true 时忽略这些字母?

【问题讨论】:

【参考方案1】:

在数组上使用.some

var url = "/login/user";
var x = ["login", "resetpassword", "authenticate"];

if (x.some(str => url.includes(str))) 
  console.log('something in X is included in URL');

或者,如果您要查找的子字符串始终位于 url 变量的前两个斜杠之间,则先提取该子字符串,然后使用 .includes

var url = "/login/user";
var x = ["login", "resetpassword", "authenticate"];

var foundStr = url.split('/')[1];

if (x.includes(foundStr)) 
  console.log('something in X is included in URL');

【讨论】:

欺骗***.com/questions/5582574/…【参考方案2】:

一种方法是使用/ 字符分割网址,而不是使用some

var url = "/login/user";
var x = ["login", "resetpassword", "authenticate"];

let urlSplitted = url.split('/')

let op = urlSplitted.some(e=> x.includes(e))

console.log(op)

【讨论】:

复制:***.com/questions/5582574/…【参考方案3】:

您可以用管道(正则表达式中的 as 或运算符)连接给定的单词,生成正则表达式并针对字符串进行测试。

只要您没有某些具有特殊含义的字符,此方法就可以使用。

var url = "/login/user",
    x = ["login", "resetpassword", "authenticate"];

console.log(new RegExp(x.join('|')).test(url));

【讨论】:

导致/login|resetpassword|authenticate/.test("/login/user") - 聪明 注意:在"/logged/authenticateduser"进行身份验证时将返回true 作为其他解决方案。 当然。但你的似乎是最聪明的。欺骗了这个***.com/a/5582621/295783

以上是关于检查数组是不是包含字符串但忽略该字符串中的其他字母[重复]的主要内容,如果未能解决你的问题,请参考以下文章

用于检查 char 数组是不是包含 Java 中用户给定字母的 if 语句

如何使用forAll检查数组中的所有字符串是不是以大写字母开头?

输入一行字符(可能包含英文字母,数字字符等其他字符),要求统计其中单词的个数?

不使用-v标志而忽略字符串

如何检查字节数组是不是包含 Java 中的 Unicode 字符串?

检查字符串(句子空格分隔)以查看它是不是包含数组中的任何字符