5 回答

TA贡献2003条经验 获得超2个赞
您可以使用替换方法摆脱任何 /
let oldstr = '/link-to-page?foo=bar&test=1';
let str = oldstr.replace('/', '');
console.log(str)
let obj = {
key: '/',
foo: 'asd',
test: false,
mock: 'data'
}
let a = Object.values(obj).some(s => str.includes(s))
console.log(a);

TA贡献1906条经验 获得超3个赞
您可以使用正则表达式来避免匹配字符
str="/link-to-page?foo=bar&test=1"
ob={
key: '/',
foo: '/',
test: false,
mock: '/'
}
path=/[a-zA-Z]/
res=Object.values(ob).some(o=>path.test(o)?str.includes(o):false)
console.log(res)

TA贡献1898条经验 获得超8个赞
单线
let isinclude=(str,obj)=>(str=str.replace('/',''),Object.keys(obj).reduce((a,v)=>a || str.includes(v),false))

TA贡献1911条经验 获得超7个赞
您可以存储有用的属性,然后循环遍历它们以检查对象内部并防止过滤:
const data = '/link-to-page?foo=bar&test=1';
const relevantProperties = ['foo', 'test', 'mock'];
const obj = {
key: '/',
foo: 'bar',
test: false,
mock: 'data'
};
for (let i = 0; i < relevantProperties.length; ++i) {
const property = relevantProperties[i];
if (data.includes(obj[property])) {
console.log(property);
break;
}
}

TA贡献1872条经验 获得超3个赞
遍历您的对象值并使用.match方法来检查这些值是否包含在给定的字符串中。如果过滤后的数组的长度是,则>0意味着找到了匹配项
let obj = {
key: '/',
foo: 'bar',
test: false,
mock: 'data'
}
let str = '/link-to-page?foo=bar&test=1'
let matchedValues = Object.values(obj).filter(x=>str.match(x)) // will return an array of all matching values
// -> (2) ["/", "bar"]
if(matchedValues.length > 0){
console.log("Matches found")
}else{
console.log("Matches found")
}
添加回答
举报