Javascript:在URL中选择具有同一元素的多个实例的元素
我需要从JS中的URL中检索一个值,我的问题是在这个URL中,元素用不同的值重复了至少两次。我需要的是最后一个 例如: 我想要的是“随机3”而不是“随机1” 我已经尝试过url.match(/。(\&|\?)元素1=(。?)\&/)[2]; 但它总是给我第一个:( 我无法更改url的编写方式,因为这是针对浏览器扩展的。从Javascript:在URL中选择具有同一元素的多个实例的元素,javascript,Javascript,我需要从JS中的URL中检索一个值,我的问题是在这个URL中,元素用不同的值重复了至少两次。我需要的是最后一个 例如: 我想要的是“随机3”而不是“随机1” 我已经尝试过url.match(/。(\&|\?)元素1=(。?)\&/)[2]; 但它总是给我第一个:( 我无法更改url的编写方式,因为这是针对浏览器扩展的。从urlString.lastIndexOf(“&element1=”)和urlString.lastIndexOf(“?element1=”)中获取最小值(而不是-1),然后使用
urlString.lastIndexOf(“&element1=”)
和urlString.lastIndexOf(“?element1=”)
中获取最小值(而不是-1),然后使用urlString.substring
var ws = "http://randomsite.com/index.php?element1=random1&element2=random2&element1=random3",
input = ws.split("?")[1].split("&"),
dataset = {},
val_to_find = "element1";
for ( var item in input){
var d = input[item].split("=");
if (!dataset[d[0]]){ dataset[d[0]] = new Array(); dataset[d[0]].push(d[1]); }
else{
dataset[d[0]].push(d[1]);
}
}
console.log("item: ", dataset[val_to_find][dataset[val_to_find].length -1]);
return dataset[val_to_find][dataset[val_to_find].length -1];
或者,将字符串拆分为:
var parts = urlString.split(/[?&]/);
…这将为您提供:
[
"http://randomsite.com/index.php",
"element1=random1",
"element2=random2",
"element1=random3"
]
…然后从数组的末尾开始循环,查找以元素=
开头的第一个条目,并获取=
之后的位(再次使用子字符串
)
你可以
for (var result, match, re = /[&?]element1=(.+?)(\&|$)/g; match = re.exec(url);) {
result = match[1];
}
alert(result);
Id尝试保留重复元素的嵌套数组
function parseQueryString() {
var elements = {},
query = window.location.search.substring(1),
vars = query.split('&');
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split('='),
key = decodeURIComponent(pair[0]),
value = decodeURIComponent(pair[1]);
if (elements.hasOwnProperty(key)) {
elements[key].push(value);
}
else {
elements[key] = [value];
}
}
}
如果你愿意,我可以写一把小提琴。
{
element1: [
"hello",
"more"
],
element2:[
"test"
]
}