Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何组合多个返回函数(JavaScript)_Javascript_Google Tag Manager - Fatal编程技术网

如何组合多个返回函数(JavaScript)

如何组合多个返回函数(JavaScript),javascript,google-tag-manager,Javascript,Google Tag Manager,我正在学习JavaScript,以便能够实现Google标记管理器。我有一个路径列表,我希望GTM将其重写为更友好的路径,如下所示: function() { return document.location.pathname.indexOf('/l/138281/2016-06-07/dy383') > -1 ? 'Test Success' : undefined; } function() { return document.location.pat

我正在学习JavaScript,以便能够实现Google标记管理器。我有一个路径列表,我希望GTM将其重写为更友好的路径,如下所示:

function() {
      return document.location.pathname.indexOf('/l/138281/2016-06-07/dy383') > -1 ? 'Test Success' : undefined;
    }

function() {
      return document.location.pathname.indexOf('/l/138281/2016-04-03/55z63') > -1 ? 'SPP Contact Success' : undefined;
我只是不知道如何将这些返回组合成一个函数(我目前有大约30个URL需要重写)。我想我可以用if/else,但建议会很好

--编辑--

上面提到的返回函数可以很好地实现单个链接的返回。我只希望能够在一个函数中重写一系列URL(或者说,最具体地说,这样做是有意义的)。希望这有助于澄清


谢谢

构建代码总是一个好主意:将抽象功能与特定问题分开

实际上,您所做的是扫描字符串中出现的关键字,并在找到此类关键字时返回特定值

因此,您需要一个执行上述计算的函数和一个保存关键字及其值(=对象)的JavaScript数据结构:

//返回模式[key]如果在字符串中找到任何键,则返回字符串:
函数匹配(字符串、模式){
for(对象的键。键(模式)){
if(string.indexOf(key)>-1)返回模式[key];
}
返回字符串;
}
变量模式={
“/l/138281/2016-06-07/dy383”:测试成功,
“/l/138281/2016-04-03/55z63”:“SPP联系成功”
}
控制台日志(匹配('/l/138281/2016-06-07/dy383',模式));//“测试成功”
log(匹配('/doesnotexist',patterns));//“/doesnotexist”

log(匹配(document.location.pathname,patterns))您希望返回一个合适的数据结构,如或。请描述您试图解决的实际问题。然后,展示一组输入和所需的输出,这样我们就可以在给定输入的情况下创建高效的代码来生成该输出。感谢您的帮助-非常感谢!我修改了它,使用自定义JS变量与Google Tag Manager一起工作,但这不起作用。最后,我使用了两个查找表来为一系列页面重写路径和标题。
URL Path        Rewrite To
/test-638-jsj   /test-success
/spp-zxcv-765   /spp-contact-success
/foo-asdf-123   /foo
/foo-bar-987    /foo-bar