2014-01-07 15 views
0

我需要從JS中的URL中檢索值,我的問題在此url中,該元素至少以不同的值重複兩次。我需要的是最後一個。使用Javascript:在具有相同元素的多個實例的URL中選擇元素

例子: http://randomsite.com/index.php?element1=random1&element2=random2&element1=random3 ,我想什麼是 「random3」 而不是 「random1」

我試過url.match(/ (\ & | \)部件1 =(。?。? )\ & /)[2]; 但它總是給我的第一個:(

我沒有更改URL是怎麼寫的,因爲這是一個瀏覽器擴展的可能性。

回答

0

取最小值(除-1 。)從urlString.lastIndexOf("&element1=")urlString.lastIndexOf("?element1="),然後用urlString.substring

或者交替,分割字符串起來:

var parts = urlString.split(/[?&]/); 

...它會給你:

[ 
    "http://randomsite.com/index.php", 
    "element1=random1", 
    "element2=random2", 
    "element1=random3" 
] 

...然後開始從數組末尾循環發現與element=開始的第一項和=(再次substring)後抓住位。

1
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]; 

http://jsfiddle.net/wMuHW/

+0

我可以寫一個小提琴如果你喜歡。 – Fallenreaper

0

你能;

for (var result, match, re = /[&?]element1=(.+?)(\&|$)/g; match = re.exec(url);) { 
    result = match[1]; 
} 

alert(result); 
0

標識儘量保持重複元素

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]; 
     } 
    } 
} 

上使用的嵌套數組:www.example.com?element1=hello&element2=test&element1=more

會給你的對象:

{ 
    element1: [ 
     "hello", 
     "more" 
    ], 
    element2:[ 
     "test" 
    ] 
} 
相關問題