【问题标题】:Check if string matches检查字符串是否匹配
【发布时间】:2020-10-23 17:49:41
【问题描述】:

我有一个数据集,每个对象都有一个promoUrl 和一个promoNumber,结构如下:

const phoneNumbers = [
  {
    promoUrl: '/interior-doors/',
    promoNumber: '589-918-0710',
  },
  {
    promoUrl: '/promo4/',
    promoNumber: '307-789-8615',
  },
];

在第一次加载时设置了一个 cookie,其中包含 referral url(下面的代码中的 const referrer),并且推荐 URL 被传递给 reduce 函数,允许我查找 URL,找到关联的电话号码,然后动态显示该号码。

const url = referrer;

const promoNumber = promoResults.reduce((promoNumber: string, results: any) => {
  const hasPromo = url === results.promoUrl;

  if (hasPromo) {
    return results.promoNumber;
  }
    return promoNumber;
}, '');

但是,现在当它找到 URL 时,只有当 cookie 值与 promoUrl 完全匹配时,它才会匹配该数字。一旦上线,我将不再负责设置 promoUrls,该任务将交给非开发人员。我该如何设置它以便只要字符串包含匹配的字符它就可以工作,即如果promoUrlinterior-doors/interior-doors,它就可以工作,而不是需要/interior-doors/?只要字符串包含匹配的字符,真的可以吗?

我尝试使用.includes() 编辑我的hasPromo const

const hasPromo = url.includes(results.promoUrl);

但它仍然对我不起作用。

【问题讨论】:

  • 这能回答你的问题吗? Compare part of string in JavaScript
  • 不幸的是,没有,除非网址完全匹配,否则似乎用const hasPromo = url.includes(results.promoUrl); 修改我的hasPromo const 仍然不起作用。修改了我的问题以包含此信息。
  • 试试IndexOf()。我链接的帖子的第一个答案中说明了这一点。
  • 不幸的是,这似乎仍然不起作用。它仅在 URL 完全匹配时才起作用。
  • 想通了!相应地添加答案!

标签: javascript if-statement constants reduce


【解决方案1】:

您是否记录了您的 url 和 results.promoUrl 建议是记录两个键(url和promoUrl)的类型和值

【讨论】:

    【解决方案2】:

    经过一番挖掘和 Robert Harvey 对 cme​​ts 的一些帮助后才弄清楚这一点。

    我需要做的就是修改hasPromo const 以首先检查results.promoUrl

    const hasPromo = results.promoUrl.includes(url);

    这完全符合我的需要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-17
      • 2016-01-12
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      相关资源
      最近更新 更多