我有一个像这样的变量
var url = "/login/user";
我有一个类似的数组,
var x = ["login", "resetpassword", "authenticate"];
现在,我需要检查字符串数组中是否存在 url 字符串。正如我们看到的那样,登录名存在于数组中,但是当我执行 x.indexOf(url)时,它总是接收到false,因为字段url也包含其他字母。那么,现在如何在检查数组中的字符串并返回true时忽略这些字母?
答案 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));