Javascript 如何从几个可能的URL参数之一获取值?

Javascript 如何从几个可能的URL参数之一获取值?,javascript,url,parameters,url-parameters,Javascript,Url,Parameters,Url Parameters,我想从url参数中检索值,但参数不是常量:它可以是“referer=”或“utm\u 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

我想从url参数中检索值,但参数不是常量:它可以是“referer=”或“utm\u 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);
我可以加些正则表达式吗

不。这不是
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();
我可以加些正则表达式吗

不。这不是
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();
您可以通过类似的方式循环:

var url=新url(“https://example.com/page?referer=&utm_source=google");
var值;
for(url.searchParams的var[key,val]{
if(key.match(/^(referer | source | utm_source)$/)和&val!=“”){
值=val;
打破
}
}
console.log(值)您可以通过类似的方式循环:

var url=新url(“https://example.com/page?referer=&utm_source=google");
var值;
for(url.searchParams的var[key,val]{
if(key.match(/^(referer | source | utm_source)$/)和&val!=“”){
值=val;
打破
}
}

console.log(值)
任何一个参数都可以绝对正确?可以迭代
url.searchParams.keys()
任何一个参数都可以绝对正确?可以迭代
url.searchParams.keys()
我刚刚测试了您的第一个解决方案,结果似乎很好!我刚刚测试了您的第一个解决方案,结果似乎很好!我收到了以下错误消息:“此语言功能仅支持ECMAScript 6模式或更好的模式:for of循环”。@B4b4j1您可以使用(如果可用),但我似乎喜欢另一个答案中的
map
思想。我收到了此错误消息:“此语言功能仅支持ECMAScript 6模式或更好的模式:for of循环”。@B4b4j1您可以使用(如果有)但我似乎喜欢另一个答案中的
map
思想。