首页 > 解决方案 > 如何从几个可能的 URL 参数之一中获取值?

问题描述

我想从 url 参数中检索值,但参数不是常量:它可以是“ referer= ”或“ utm_source= ”或“ source= ”。

我可以得到价值

url.searchParams.get("referer");

现在完成脚本:

function() {
var url_string = window.location.href;
var url = new URL(url_string);
var ref = url.searchParams.get("referer");

if (ref == undefined) {
 return "No Referer";
} else {
  return ref; 
}
}

我可以包含一些正则表达式,例如:

var ref = url.searchParams.get.match(/referer|source|utm\_source/g);

标签: javascripturlparametersurl-parameters

解决方案


我可以包含一些正则表达式吗

不,这不是get.

您可以使用一组||s:

var ref = url.searchParams.get("referer") || url.searchParams.get("source") || url.searchParams.get("utm_source");

或者获取一个键名数组,将它们映射到 URL 中的值,过滤掉任何没有值的值,然后从数组中取出第一个(可能是唯一的)值。

var possible_key_names = ["referer", "source", "utm_source"];
var ref = possible_key_names
    .map(name => url.searchParams.get(name))
    .filter(value => !!value)
    .shift();

推荐阅读