我正在构建一个功能来处理动态电话号码交换,识别[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
那里做什么。任何帮助将不胜感激。
答案 0 :(得分:2)
使用==
进行完全匹配。并且由于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 : '';