【问题标题】:How to check presence of a URL parameter compared to an Array?与数组相比,如何检查 URL 参数是否存在?
【发布时间】:2021-03-15 21:28:10
【问题描述】:

鉴于这两个示例网址和代码。如何使用数组作为参考来检查值是否在 UTM 参数中? (在任何给定时间只有一个 utm 参数)。 example.com?utm=test
example.com?utm=test2

var partnerArray = ["test", 'test2'];

function findPartner() { 
    if window.location.href.indexOf('?utm='(partnerArray)' !== -1) {
        //do something fun here
    }

我知道我的代码是错误的 - 我还没有找到使用数组检查 URL 中的值的示例。

谢谢。

【问题讨论】:

  • 如果你先从 url 中获取值,你可以使用 partnerArray.includes(utm); (总是尝试将你的问题分解成几个部分;第 1 部分是从 URL 中提取值,第 2 部分是检查如果结果字符串在数组中;您正在寻找的现有解决方案过于具体,但这两个部分都有大量现有解决方案,很容易找到)
  • @ChrisG 我会知道数组中的值。我可以找到 url 是否包含这样的参数:'''(window.location.href.indexOf('?utm=test') > 0)''' - 但这是 UTM 的一个特定值。我需要对照一个已知列表(数组)检查它。这就是我所缺少的难题的一部分。
  • 请再次阅读我的评论。您需要先提取 URL 的 utm 参数的值。一旦你有了它,即一旦你有了test,检查它对数组是微不足道的。你被困在有缺陷的方法上。
  • @ChrisG - 好的 - 我能够获取 URL 参数的值(如 AKX 所述)但似乎坚持使用正确的比较语法来检查数组的参数值。即使在他提供的示例中,我也不确定如何使用它来进行页面修改。请指教。
  • 您只需要if (partnerArray.includes(utmParam)) { ... }

标签: javascript jquery arrays


【解决方案1】:

让我们把它分成两个问题。一、获取utm参数的值:

function getUTM() {
  return new URLSearchParams(window.location.search).get("utm");
}

然后,确定它是否是已知的合作伙伴之一,并返回可能的合作伙伴。

const partnerArray = ["test", 'test2'];
function getPartner() {
  const utm = getUTM();
  return partnerArray.find(partner => partner === utm);
}

如果查询字符串的 utm 参数与任一已知伙伴都不匹配,getPartner() 将返回 undefined

【讨论】:

  • 认为你想要location.search 而不是location.query
  • @AKX -- 谢谢。这很有帮助。将 getPartner() 函数与 partnerArray 进行比较时,我立即陷入困境 - 我如何使用它来进行一些页面修改。我需要类似的东西:如果((getUTM)!==(getPartner))做其他事情{什么都不做}。请指教。
  • @JPFotoz if(getPartner()) { ... a known partner was found ...} else { ... wasn't. }
【解决方案2】:

感谢所有提供意见的人。这是我为未来读者提供的来自 cmets 的解决方案。

第一:建立数组:

var partnerArray1 = ["test1", 'test2'];
var partnerArray2 = ["test3", 'test4'];

第二个:检查 URL 的 UTM 参数值中的内容

var urlParams = new URLSearchParams(window.location.search).get("utm");

3rd:创建一个函数来检查数组的值:

function checkUTM() {
    if (partnerArray1.indexOf(urlParams) !== -1){
    //do some cool stuff here
    }

    if (partnerArray2.indexOf(urlParams) !== -1){
     //do some more cool stuff here
    }
}

我没有弄清楚如何将值传递给函数并检查它,我采用了稍微混乱的方式,但它实现了我的目标。如果对上述内容有改进,请随时提供清晰的更新示例。

【讨论】:

    猜你喜欢
    • 2019-12-10
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    相关资源
    最近更新 更多