[英]Check if two URL strings are equal
我正在构建一个函数来处理动态电话号码交换、识别referral
URL、映射数据集,然后输出promoUrl
的相关电话号码。 数据格式如下:
const phoneNumbers = [
{
promoUrl: '/interior-doors/',
promoNumber: '589-918-0710',
},
{
promoUrl: '/promo4/',
promoNumber: '307-789-8615',
},
];
该函数映射数据并减少它,让我可以像这样对它进行排序:
const url = location.pathname.replace(/\/+$/, '');
const promoNumber = phoneNumbers.reduce((promoNumber, results) => {
const hasPromo = results.promoUrl.includes(url);
if (hasPromo) {
return results.promoNumber;
}
return promoNumber;
}, '');
我在使用hasPromo
遇到了一些问题。 它现在的构建方式允许 promoUrl 有一些变化并且仍然有效,这意味着只要它包含从url
返回的内容,它就可以工作,即/interior-doors/
、 /interior-doors
和interior-doors
将全部工作,这很棒,但如果url
是/interior-do
,它也可以工作。 我需要它不这样做。 它应该独立于格式工作,但只有在字母字符串准确时才返回promoNumber
。
我假设这是一个regex
,但我不知道我在用regex
做什么。 任何帮助将不胜感激。
使用==
进行精确匹配。 由于promoURL
属性总是有/
围绕它,所以在设置url
时添加这些分隔符
const url = '/' + location.pathname.replace(/\/+$/, '') + '/';
const promoNumber = phoneNumbers.reduce((promoNumber, results) => {
const hasPromo = results.promoUrl == url;
if (hasPromo) {
return results.promoNumber;
}
return promoNumber;
}, '');
reduce
似乎也是错误的功能。 您只需要找到匹配的promoUrl
,您不必继续减少,因为减少功能不会以任何方式合并结果。
const promo = phoneNumbers.find(({promoUrl}) => promoUrl == url);
const promoNumber = promo ? promo.promoNumber : '';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.