我正在学习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 Path Rewrite To
/test-638-jsj /test-success
/spp-zxcv-765 /spp-contact-success
/foo-asdf-123 /foo
/foo-bar-987 /foo-bar
上面提到的返回功能可以很好地为单个链接做到这一点。我只是希望能够在一个函数中重写一系列URL(或者最有意义的是这样做)。希望这有助于澄清。
谢谢!
答案 0 :(得分:0)
构造代码总是一个好主意:将抽象功能与特定问题分开。
您实际执行的操作是扫描字符串以查找关键字,并在找到关键字时返回特定值。
因此,您需要一个执行上述计算的函数和一个包含关键字及其值(= Object)的JavaScript数据结构:
// Return patterns[key] if any key is found in string, else return string:
function match(string, patterns) {
for (key of Object.keys(patterns)) {
if (string.indexOf(key) > -1) return patterns[key];
}
return string;
}
var patterns = {
'/l/138281/2016-06-07/dy383': 'Test Success',
'/l/138281/2016-04-03/55z63': 'SPP Contact Success'
}
console.log(match('/l/138281/2016-06-07/dy383', patterns)); // "Test Success"
console.log(match('/doesnotexist', patterns)); // "/doesnotexist"
console.log(match(document.location.pathname, patterns));