如何解决检查两个URL字符串是否相等
我正在构建一个功能来处理动态电话号码交换,识别[admin@ansible_client1 ~]$ cat /etc/passwd | grep Jim
Jim:x:1004:1005::/home/Jim:/bin/bash
[admin@ansible_client2 Jim]$ cat /etc/passwd | grep Jim
Jim:x:1007:1008::/home/Jim:/bin/bash
网址,通过数据集进行映射,然后输出referral
的相关电话号码。数据的格式如下:
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;
},'');
上遇到了一些问题。现在,它的构建方式允许promoUrl有所变化并仍然有效,这意味着只要它包含从hasPromo
返回的内容,然后它就可以工作,即url
,/interior-doors/
和/interior-doors
都可以工作,这很好,但是如果interior-doors
为url
,它也可以工作。我需要它不这样做。它应该独立于格式工作,但只有字母字符串正确时才返回/interior-do
。
我假设这是promoNumber
,但我不知道我在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 : '';
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。