首页 > 解决方案 > 检查对象值的任何部分是否包含在字符串中

问题描述

我有一个看起来像这样的字符串: /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这里 - 如果那样的话,我只想搜索“实际文本”说得通)。

我应该先转换对象键和字符串以摆脱任何/还是有其他方法?

谢谢!

标签: javascriptstringobjectfunctional-programming

解决方案


您可以使用替换方法摆脱任何 /

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


推荐阅读