Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查字符串中是否包含对象值的任何部分_Javascript_String_Object_Functional Programming - Fatal编程技术网

Javascript 检查字符串中是否包含对象值的任何部分

Javascript 检查字符串中是否包含对象值的任何部分,javascript,string,object,functional-programming,Javascript,String,Object,Functional Programming,我有一个字符串如下所示: /链接到页面?foo=bar&test=1 另外,我有一个对象,看起来像这样: { key: '/', foo: 'bar', test: false, mock: 'data' } 我想要实现的事情很简单(我想),但也许我忽略了这里显而易见的一点: 我想检查对象的任何值是否包含在字符串中 我的第一个想法是: Object.keys(obj.map)(o=>str.includes(obj[o]))-但这显然只返回一个布尔数组 尝试这样做:Object

我有一个字符串如下所示:
/链接到页面?foo=bar&test=1

另外,我有一个对象,看起来像这样:

{
  key: '/',
  foo: 'bar',
  test: false,
  mock: 'data'
}
我想要实现的事情很简单(我想),但也许我忽略了这里显而易见的一点:

我想检查对象的任何值是否包含在字符串中

我的第一个想法是:
Object.keys(obj.map)(o=>str.includes(obj[o]))
-但这显然只返回一个布尔数组

尝试这样做:
Object.keys(obj.map)(o=>obj[o])。一些(s=>str.includes(s))
也不会起作用,因为它可能会提供误报(在我的对象中,我的
键的值为
//code>,不应将其考虑在内,但它会在此处返回
true
,我只想搜索“实际文本”(如果有意义的话)

我应该首先转换对象键和字符串以去除任何
/
,还是有其他方法


谢谢!

您可以使用正则表达式来避免匹配字符

str=“/link to page?foo=bar&test=1”
ob={
键:“/”,
foo:“/”,
测试:错误,
模拟:'/'
}
路径=/[a-zA-Z]/
res=Object.values(ob).some(o=>path.test(o)?str.includes(o):false)

log(res)
您可以使用replace方法除去任何/

let oldstr='/链接到页面?foo=bar&test=1';
设str=oldstr.replace('/','');
console.log(str)
设obj={
键:“/”,
傅:“asd”,
测试:错误,
模拟:“数据”
}
设a=Object.values(obj).some(s=>str.includes)

console.log(a);
您可以存储有用的属性,然后循环检查它们以检查对象内部并防止过滤:

const data='/链接到页面?foo=bar&test=1';
const-relevantProperties=['foo','test','mock'];
常量对象={
键:“/”,
福:“酒吧”,
测试:错误,
模拟:“数据”
};
for(设i=0;i}
迭代对象值,并使用
.match
方法检查值是否包含在给定字符串中。如果筛选数组的长度为
>0
,则表示找到匹配项

让obj={
键:“/”,
福:“酒吧”,
测试:错误,
模拟:“数据”
}
让str='/链接到页面?foo=bar&test=1'
让matchedValues=Object.values(obj).filter(x=>str.match(x))//将返回所有匹配值的数组
//->(2)[“/”,“条”]
如果(matchedValues.length>0){
log(“找到匹配项”)
}否则{
log(“找到匹配项”)
}
一个衬里

let isinclude=(str,obj)=>(str=str.replace('/',''),Object.keys(obj).reduce((a,v)=>a || str.includes(v),false))
说到“缺少明显的”…谢谢!完全忘记了
.replace()
方法。duh!让str=oldstr.replace(/\W/g');您可以使用此regexp匹配所有非单词字符