检查两个 URL 字符串是否相等
Check if two URL strings are equal
我正在构建一个函数来处理动态 phone 号码交换,识别 referral
url,通过数据集进行映射,然后输出 promoUrl
的相关 phone 号码。数据格式如下:
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
编辑的 return 然后它就可以工作,即 /interior-doors/
, /interior-doors
和 interior-doors
都可以,这很好,但如果 url
是 /interior-do
,它也可以。我需要它不要那样做。它应该独立于格式工作,但只有 return 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 : '';
我正在构建一个函数来处理动态 phone 号码交换,识别 referral
url,通过数据集进行映射,然后输出 promoUrl
的相关 phone 号码。数据格式如下:
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
编辑的 return 然后它就可以工作,即 /interior-doors/
, /interior-doors
和 interior-doors
都可以,这很好,但如果 url
是 /interior-do
,它也可以。我需要它不要那样做。它应该独立于格式工作,但只有 return 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 : '';