【发布时间】: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,该任务将交给非开发人员。我该如何设置它以便只要字符串包含匹配的字符它就可以工作,即如果promoUrl 是interior-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);修改我的hasPromoconst仍然不起作用。修改了我的问题以包含此信息。 -
试试
IndexOf()。我链接的帖子的第一个答案中说明了这一点。 -
不幸的是,这似乎仍然不起作用。它仅在
URL完全匹配时才起作用。 -
想通了!相应地添加答案!
标签: javascript if-statement constants reduce