为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕姐8265434 2022-12-02 16:07:35
我有一个看起来像这样的字符串: /link-to-page?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]).some(s => str.includes(s))也不会工作,因为它可能会提供误报(在我的对象中我有key一个/不应考虑的值,但它会返回true这里 - 我只想搜索“实际文本”如果说得通)。我应该首先转换对象键和字符串以摆脱任何/还是有其他方法?谢谢!
查看完整描述

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);


查看完整回答
反对 回复 2022-12-02
?
一只名叫tom的猫

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)


查看完整回答
反对 回复 2022-12-02
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

单线

let isinclude=(str,obj)=>(str=str.replace('/',''),Object.keys(obj).reduce((a,v)=>a || str.includes(v),false))



查看完整回答
反对 回复 2022-12-02
?
Smart猫小萌

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;

  }

}


查看完整回答
反对 回复 2022-12-02
?
守着一只汪

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")

}


查看完整回答
反对 回复 2022-12-02
  • 5 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号