检查数组是否包含字符串,但忽略该字符串中的其他字母

时间:2019-02-05 08:18:29

标签: javascript arrays angular string

我有一个像这样的变量

var url = "/login/user";

我有一个类似的数组,

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

现在,我需要检查字符串数组中是否存在 url 字符串。正如我们看到的那样,登录名存在于数组中,但是当我执行 x.indexOf(url)时,它总是接收到false,因为字段url也包含其他字母。那么,现在如何在检查数组中的字符串并返回true时忽略这些字母?

3 个答案:

答案 0 :(得分:2)

在数组上使用.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');
}

答案 1 :(得分: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)

答案 2 :(得分:2)

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

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

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

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